r261945 - [analyzer] Shorten ObjcSuperDeallocChecker diagnostics.

Devin Coughlin via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 25 16:47:43 PST 2016


Author: dcoughlin
Date: Thu Feb 25 18:47:42 2016
New Revision: 261945

URL: http://llvm.org/viewvc/llvm-project?rev=261945&view=rev
Log:
[analyzer] Shorten ObjcSuperDeallocChecker diagnostics.

Change "use of 'self' after it has been freed with call to [super dealloc]" to
"use of 'self' after it has been deallocated" and "use of instance variable
'_ivar' after the instance has been freed with call to [super dealloc]" to
"use of instance variable '_ivar' after 'self' has been deallocated".

Modified:
    cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp
    cfe/trunk/test/Analysis/DeallocUseAfterFreeErrors.m

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp?rev=261945&r1=261944&r2=261945&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp Thu Feb 25 18:47:42 2016
@@ -166,7 +166,7 @@ void ObjCSuperDeallocChecker::checkLocat
   llvm::raw_string_ostream OS(Buf);
   if (IvarRegion) {
     OS << "use of instance variable '" << *IvarRegion->getDecl() <<
-          "' after the instance has been freed with call to [super dealloc]";
+          "' after 'self' has been deallocated";
     Desc = OS.str();
   }
 
@@ -189,7 +189,7 @@ void ObjCSuperDeallocChecker::reportUseA
     return;
 
   if (Desc.empty())
-    Desc = "use of 'self' after it has been freed with call to [super dealloc]";
+    Desc = "use of 'self' after it has been deallocated";
 
   // Generate the report.
   std::unique_ptr<BugReport> BR(

Modified: cfe/trunk/test/Analysis/DeallocUseAfterFreeErrors.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/DeallocUseAfterFreeErrors.m?rev=261945&r1=261944&r2=261945&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/DeallocUseAfterFreeErrors.m (original)
+++ cfe/trunk/test/Analysis/DeallocUseAfterFreeErrors.m Thu Feb 25 18:47:42 2016
@@ -36,8 +36,8 @@ typedef struct objc_selector *SEL;
 }
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  [_ivar release]; // expected-warning {{use of instance variable '_ivar' after the instance has been freed with call to [super dealloc]}}
-  // expected-note at -1 {{use of instance variable '_ivar' after the instance has been freed with call to [super dealloc]}}
+  [_ivar release]; // expected-warning {{use of instance variable '_ivar' after 'self' has been deallocated}}
+  // expected-note at -1 {{use of instance variable '_ivar' after 'self' has been deallocated}}
 }
 @end
 
@@ -56,8 +56,8 @@ typedef struct objc_selector *SEL;
 }
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  _delegate = nil; // expected-warning {{use of instance variable '_delegate' after the instance has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of instance variable '_delegate' after the instance has been freed with call to [super dealloc]}}
+  _delegate = nil; // expected-warning {{use of instance variable '_delegate' after 'self' has been deallocated}}
+      // expected-note at -1 {{use of instance variable '_delegate' after 'self' has been deallocated}}
 }
 @end
 
@@ -74,8 +74,8 @@ struct SomeStruct {
 @implementation SuperDeallocThenAssignIvarField
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  _s.f = 7; // expected-warning {{use of instance variable '_s' after the instance has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of instance variable '_s' after the instance has been freed with call to [super dealloc]}}
+  _s.f = 7; // expected-warning {{use of instance variable '_s' after 'self' has been deallocated}}
+      // expected-note at -1 {{use of instance variable '_s' after 'self' has been deallocated}}
 }
 @end
 
@@ -93,8 +93,21 @@ struct SomeStruct {
 @implementation SuperDeallocThenAssignIvarIvar
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  _ivar->_otherIvar = 7; // expected-warning {{use of instance variable '_ivar' after the instance has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of instance variable '_ivar' after the instance has been freed with call to [super dealloc]}}
+  _ivar->_otherIvar = 7; // expected-warning {{use of instance variable '_ivar' after 'self' has been deallocated}}
+      // expected-note at -1 {{use of instance variable '_ivar' after 'self' has been deallocated}}
+}
+ at end
+
+ at interface SuperDeallocThenAssignSelfIvar : NSObject {
+  NSObject *_ivar;
+}
+ at end
+
+ at implementation SuperDeallocThenAssignSelfIvar
+- (void)dealloc {
+  [super dealloc]; // expected-note {{[super dealloc] called here}}
+  self->_ivar = nil; // expected-warning {{use of instance variable '_ivar' after 'self' has been deallocated}}
+      // expected-note at -1 {{use of instance variable '_ivar' after 'self' has been deallocated}}
 }
 @end
 
@@ -112,8 +125,8 @@ struct SomeStruct {
 }
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  self.ivar = nil; // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  self.ivar = nil; // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
 }
 @end
 
@@ -131,8 +144,8 @@ struct SomeStruct {
 }
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  self.delegate = nil; // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  self.delegate = nil; // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
 }
 @end
 
@@ -145,8 +158,8 @@ struct SomeStruct {
 }
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  [self _invalidate]; // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  [self _invalidate]; // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
 }
 @end
 
@@ -160,8 +173,8 @@ static void _invalidate(NSObject *object
 @implementation SuperDeallocThenCallNonObjectiveCMethodClass
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  _invalidate(self); // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  _invalidate(self); // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
 }
 @end
 
@@ -174,8 +187,8 @@ static void _invalidate(NSObject *object
 
 - (void)dealloc {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  [SuperDeallocThenCallObjectiveClassMethodClass invalidate:self]; // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  [SuperDeallocThenCallObjectiveClassMethodClass invalidate:self]; // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
 }
 @end
 
@@ -195,8 +208,8 @@ static void _invalidate(NSObject *object
     return;
   }
   [super dealloc];    // expected-note {{[super dealloc] called here}}
-  [self _invalidate]; // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  [self _invalidate]; // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
 }
 @end
 
@@ -353,8 +366,8 @@ static void _invalidate(NSObject *object
 
 - (void)dealloc; {
   [super dealloc]; // expected-note {{[super dealloc] called here}}
-  [self anotherMethod]; // expected-warning {{use of 'self' after it has been freed with call to [super dealloc]}}
-      // expected-note at -1 {{use of 'self' after it has been freed with call to [super dealloc]}}
+  [self anotherMethod]; // expected-warning {{use of 'self' after it has been deallocated}}
+      // expected-note at -1 {{use of 'self' after it has been deallocated}}
   [super dealloc];
 }
 @end




More information about the cfe-commits mailing list