From 2545b1d99942080bac4a74cda92c620123d0d6e9 Mon Sep 17 00:00:00 2001 From: Jordan Rose Date: Tue, 23 Apr 2013 01:42:25 +0000 Subject: [PATCH] [analyzer] RetainCountChecker: Clean up path notes for autorelease. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180075 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Checkers/RetainCountChecker.cpp | 16 ++--- test/Analysis/objc-subscript.m | 4 +- test/Analysis/properties.m | 4 +- test/Analysis/retain-release-path-notes.m | 44 ++++++------- test/Analysis/retain-release.m | 62 +++++++++---------- 5 files changed, 66 insertions(+), 64 deletions(-) diff --git a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp index 4c63019083..7f83d1d371 100644 --- a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp @@ -326,7 +326,7 @@ void RefVal::print(raw_ostream &Out) const { break; case RefVal::ErrorOverAutorelease: - Out << "Over autoreleased"; + Out << "Over-autoreleased"; break; case RefVal::ErrorReturnedNotOwned: @@ -1662,10 +1662,10 @@ namespace { class OverAutorelease : public CFRefBug { public: OverAutorelease() - : CFRefBug("Object sent -autorelease too many times") {} + : CFRefBug("Object autoreleased too many times") {} const char *getDescription() const { - return "Object sent -autorelease too many times"; + return "Object autoreleased too many times"; } }; @@ -2050,7 +2050,7 @@ PathDiagnosticPiece *CFRefReportVisitor::VisitNode(const ExplodedNode *N, return 0; assert(PrevV.getAutoreleaseCount() < CurrV.getAutoreleaseCount()); - os << "Object sent -autorelease message"; + os << "Object autoreleased"; break; } @@ -3554,10 +3554,12 @@ RetainCountChecker::handleAutoreleaseCounts(ProgramStateRef state, if (N) { SmallString<128> sbuf; llvm::raw_svector_ostream os(sbuf); - os << "Object over-autoreleased: object was sent -autorelease "; + os << "Object was autoreleased "; if (V.getAutoreleaseCount() > 1) - os << V.getAutoreleaseCount() << " times "; - os << "but the object has a +" << V.getCount() << " retain count"; + os << V.getAutoreleaseCount() << " times but the object "; + else + os << "but "; + os << "has a +" << V.getCount() << " retain count"; if (!overAutorelease) overAutorelease.reset(new OverAutorelease()); diff --git a/test/Analysis/objc-subscript.m b/test/Analysis/objc-subscript.m index 324bf1c785..ae621c9828 100644 --- a/test/Analysis/objc-subscript.m +++ b/test/Analysis/objc-subscript.m @@ -39,9 +39,9 @@ typedef unsigned int NSUInteger; // for subscripting - (id)getDoesNotRetain:(BOOL)keyed { if (keyed) - return [self[self] autorelease]; // expected-warning{{Object sent -autorelease too many times}} + return [self[self] autorelease]; // expected-warning{{Object autoreleased too many times}} else - return [self[0] autorelease]; // expected-warning{{Object sent -autorelease too many times}} + return [self[0] autorelease]; // expected-warning{{Object autoreleased too many times}} } // for subscripting diff --git a/test/Analysis/properties.m b/test/Analysis/properties.m index 4aa91805fd..ddd0068d36 100644 --- a/test/Analysis/properties.m +++ b/test/Analysis/properties.m @@ -102,7 +102,7 @@ typedef struct _NSZone NSZone; else value = [[NSNumber alloc] initWithInteger:0]; - return [value autorelease]; // expected-warning {{Object sent -autorelease too many times}} + return [value autorelease]; // expected-warning {{Object autoreleased too many times}} } @end @@ -111,7 +111,7 @@ NSNumber* numberFromMyNumberProperty(MyNumber* aMyNumber) { NSNumber* result = aMyNumber.myNumber; - return [result autorelease]; // expected-warning {{Object sent -autorelease too many times}} + return [result autorelease]; // expected-warning {{Object autoreleased too many times}} } diff --git a/test/Analysis/retain-release-path-notes.m b/test/Analysis/retain-release-path-notes.m index 0e26e17336..8a023736c5 100644 --- a/test/Analysis/retain-release-path-notes.m +++ b/test/Analysis/retain-release-path-notes.m @@ -86,15 +86,15 @@ void implicitDealloc () { void overAutorelease () { id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}} - [object autorelease]; // expected-note{{Object sent -autorelease message}} - [object autorelease]; // expected-note{{Object sent -autorelease message}} - return; // expected-warning{{Object sent -autorelease too many times}} expected-note{{Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count}} + [object autorelease]; // expected-note{{Object autoreleased}} + [object autorelease]; // expected-note{{Object autoreleased}} + return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased 2 times but the object has a +1 retain count}} } void autoreleaseUnowned (Foo *foo) { id object = foo.propertyValue; // expected-note{{Property returns an Objective-C object with a +0 retain count}} - [object autorelease]; // expected-note{{Object sent -autorelease message}} - return; // expected-warning{{Object sent -autorelease too many times}} expected-note{{Object over-autoreleased: object was sent -autorelease but the object has a +0 retain count}} + [object autorelease]; // expected-note{{Object autoreleased}} + return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased but has a +0 retain count}} } void makeCollectableIgnored () { @@ -137,7 +137,7 @@ CFTypeRef CFGetRuleViolation () { - (id)copyAutorelease { id result = [[Foo alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}} - [result autorelease]; // expected-note{{Object sent -autorelease message}} + [result autorelease]; // expected-note{{Object autoreleased}} return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} } @end @@ -1906,9 +1906,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -1981,9 +1981,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -2044,14 +2044,14 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject sent -autorelease too many times +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeObject sent -autorelease too many times +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextoverAutorelease // CHECK-NEXT: issue_hash4 @@ -2199,9 +2199,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -2262,14 +2262,14 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased but has a +0 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased but has a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject sent -autorelease too many times +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeObject sent -autorelease too many times +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextautoreleaseUnowned // CHECK-NEXT: issue_hash3 @@ -3814,9 +3814,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m index b7a0c520ae..a7845b7520 100644 --- a/test/Analysis/retain-release.m +++ b/test/Analysis/retain-release.m @@ -479,20 +479,20 @@ void f13_autorelease_b() { CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); [(id) A autorelease]; [(id) A autorelease]; -} // expected-warning{{Object sent -autorelease too many times}} +} // expected-warning{{Object autoreleased too many times}} CFMutableArrayRef f13_autorelease_c() { CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); [(id) A autorelease]; [(id) A autorelease]; - return A; // expected-warning{{Object sent -autorelease too many times}} + return A; // expected-warning{{Object autoreleased too many times}} } CFMutableArrayRef f13_autorelease_d() { CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); [(id) A autorelease]; [(id) A autorelease]; - CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{Object sent -autorelease too many times}} + CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{Object autoreleased too many times}} CFRelease(B); // no-warning while (1) {} } @@ -8929,9 +8929,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -9004,9 +9004,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -9052,14 +9052,14 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject sent -autorelease too many times +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeObject sent -autorelease too many times +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf13_autorelease_b // CHECK-NEXT: issue_hash4 @@ -9207,9 +9207,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -9282,9 +9282,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -9345,14 +9345,14 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +0 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject sent -autorelease too many times +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeObject sent -autorelease too many times +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf13_autorelease_c // CHECK-NEXT: issue_hash4 @@ -9500,9 +9500,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -9575,9 +9575,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -9672,14 +9672,14 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count +// CHECK-NEXT: Object was autoreleased 2 times but the object has a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionObject sent -autorelease too many times +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeObject sent -autorelease too many times +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf13_autorelease_d // CHECK-NEXT: issue_hash4 @@ -13605,9 +13605,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -20127,9 +20127,9 @@ static int Cond; // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object sent -autorelease message +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol -- 2.40.0