mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 11:39:35 +00:00
[analyzer] Include type name in Retain Count Checker diagnostics
The more detailed diagnostic will make identifying which object the diagnostics refer to easier. Differential Revision: https://reviews.llvm.org/D27740 llvm-svn: 289883
This commit is contained in:
parent
379294676d
commit
232ecfdf9c
@ -1990,11 +1990,23 @@ PathDiagnosticPiece *CFRefReportVisitor::VisitNode(const ExplodedNode *N,
|
||||
}
|
||||
|
||||
if (CurrV.getObjKind() == RetEffect::CF) {
|
||||
os << " returns a Core Foundation object with a ";
|
||||
if (Sym->getType().isNull()) {
|
||||
os << " returns a Core Foundation object with a ";
|
||||
} else {
|
||||
os << " returns a Core Foundation object of type "
|
||||
<< Sym->getType().getAsString() << " with a ";
|
||||
}
|
||||
}
|
||||
else {
|
||||
assert (CurrV.getObjKind() == RetEffect::ObjC);
|
||||
os << " returns an Objective-C object with a ";
|
||||
QualType T = Sym->getType();
|
||||
if (T.isNull() || !isa<ObjCObjectPointerType>(T)) {
|
||||
os << " returns an Objective-C object with a ";
|
||||
} else {
|
||||
const ObjCObjectPointerType *PT = cast<ObjCObjectPointerType>(T);
|
||||
os << " returns an instance of "
|
||||
<< PT->getPointeeType().getAsString() << " with a ";
|
||||
}
|
||||
}
|
||||
|
||||
if (CurrV.isOwned()) {
|
||||
|
@ -2438,9 +2438,9 @@ namespace rdar14960554 {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -11355,9 +11355,9 @@ namespace rdar14960554 {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of RDar10797980 with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of RDar10797980 with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -20325,9 +20325,9 @@ namespace rdar14960554 {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
|
@ -160,7 +160,7 @@ id testAutoreleaseTakesEffectInDispatch() {
|
||||
dispatch_once(&token, ^{});
|
||||
|
||||
id x = [[[[NSObject alloc] init] autorelease] autorelease];
|
||||
// expected-note@-1 {{Method returns an Objective-C object with a +1 retain count}}
|
||||
// expected-note@-1 {{Method returns an instance of NSObject with a +1 retain count}}
|
||||
// expected-note@-2 {{Object autoreleased}}
|
||||
// expected-note@-3 {{Object autoreleased}}
|
||||
|
||||
@ -1840,9 +1840,9 @@ void testNullDereferenceInDispatch() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
|
@ -441,9 +441,9 @@ id rdar14061675() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -911,9 +911,9 @@ id rdar14061675() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1091,9 +1091,9 @@ id rdar14061675() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1466,9 +1466,9 @@ id rdar14061675() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1782,9 +1782,9 @@ id rdar14061675() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1879,9 +1879,9 @@ id rdar14061675() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +0 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +0 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
|
@ -1191,9 +1191,9 @@ void rdar8331641(int x) {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
|
@ -90,7 +90,7 @@ void _dispatch_object_validate(dispatch_object_t object);
|
||||
CFErrorRef error;
|
||||
CFDictionaryRef testDict = CFPropertyListCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)plistData, 0, 0, &error);
|
||||
#if HAS_ARC
|
||||
// expected-note@-2 {{Call to function 'CFPropertyListCreateWithData' returns a Core Foundation object with a +1 retain count}}
|
||||
// expected-note@-2 {{Call to function 'CFPropertyListCreateWithData' returns a Core Foundation object of type CFPropertyListRef with a +1 retain count}}
|
||||
#endif
|
||||
return (__bridge NSDictionary *)testDict;
|
||||
#if HAS_ARC
|
||||
|
@ -40,12 +40,12 @@ CFTypeRef CFGetSomething();
|
||||
|
||||
|
||||
void creationViaCFCreate () {
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
|
||||
}
|
||||
|
||||
void makeCollectable () {
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
CFRetain(leaked); // expected-note{{Reference count incremented. The object now has a +2 retain count}}
|
||||
CFMakeCollectable(leaked); // expected-note{{In GC mode a call to 'CFMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. An object must have a 0 retain count to be garbage collected. After this call its retain count is +1}}
|
||||
NSMakeCollectable(leaked); // expected-note{{In GC mode a call to 'NSMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. Since it now has a 0 retain count the object can be automatically collected by the garbage collector}}
|
||||
@ -54,7 +54,7 @@ void makeCollectable () {
|
||||
}
|
||||
|
||||
void retainReleaseIgnored () {
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +0 retain count}}
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +0 retain count}}
|
||||
[object retain]; // expected-note{{In GC mode the 'retain' message has no effect}}
|
||||
[object release]; // expected-note{{In GC mode the 'release' message has no effect}}
|
||||
[object autorelease]; // expected-note{{In GC mode an 'autorelease' has no effect}}
|
||||
@ -63,12 +63,12 @@ void retainReleaseIgnored () {
|
||||
|
||||
@implementation Foo (FundamentalRuleUnderGC)
|
||||
- (id)getViolation {
|
||||
id object = (id) CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
id object = (id) CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
return object; // expected-warning{{leak}} expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'object' and returned from method 'getViolation' is potentially leaked when using garbage collection. Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector}}
|
||||
}
|
||||
|
||||
- (id)copyViolation {
|
||||
id object = (id) CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
id object = (id) CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected}}
|
||||
return object; // expected-warning{{leak}} expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'object' and returned from method 'copyViolation' is potentially leaked when using garbage collection. Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector}}
|
||||
}
|
||||
@end
|
||||
@ -137,9 +137,9 @@ void retainReleaseIgnored () {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -283,9 +283,9 @@ void retainReleaseIgnored () {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -729,9 +729,9 @@ void retainReleaseIgnored () {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +0 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +0 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1100,9 +1100,9 @@ void retainReleaseIgnored () {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1287,9 +1287,9 @@ void retainReleaseIgnored () {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count. Core Foundation objects are not automatically garbage collected</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
|
@ -44,12 +44,12 @@ CFTypeRef CFGetSomething();
|
||||
|
||||
|
||||
void creationViaAlloc () {
|
||||
id leaked = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
|
||||
id leaked = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
|
||||
return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
|
||||
}
|
||||
|
||||
void creationViaCFCreate () {
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}}
|
||||
return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
|
||||
}
|
||||
|
||||
@ -68,25 +68,25 @@ void acquisitionViaProperty (Foo *foo) {
|
||||
}
|
||||
|
||||
void acquisitionViaCFFunction () {
|
||||
CFTypeRef leaked = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count}}
|
||||
CFTypeRef leaked = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count}}
|
||||
CFRetain(leaked); // expected-note{{Reference count incremented. The object now has a +1 retain count}}
|
||||
return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
|
||||
}
|
||||
|
||||
void explicitDealloc () {
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
|
||||
[object dealloc]; // expected-note{{Object released by directly sending the '-dealloc' message}}
|
||||
[object class]; // expected-warning{{Reference-counted object is used after it is released}} // expected-note{{Reference-counted object is used after it is released}}
|
||||
}
|
||||
|
||||
void implicitDealloc () {
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
|
||||
[object release]; // expected-note{{Object released}}
|
||||
[object class]; // expected-warning{{Reference-counted object is used after it is released}} // expected-note{{Reference-counted object is used after it is released}}
|
||||
}
|
||||
|
||||
void overAutorelease () {
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
|
||||
id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with 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}}
|
||||
@ -99,19 +99,19 @@ void autoreleaseUnowned (Foo *foo) {
|
||||
}
|
||||
|
||||
void makeCollectableIgnored () {
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
|
||||
CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}}
|
||||
CFMakeCollectable(leaked); // expected-note{{When GC is not enabled a call to 'CFMakeCollectable' has no effect on its argument}}
|
||||
NSMakeCollectable(leaked); // expected-note{{When GC is not enabled a call to 'NSMakeCollectable' has no effect on its argument}}
|
||||
return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
|
||||
}
|
||||
|
||||
CFTypeRef CFCopyRuleViolation () {
|
||||
CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count}}
|
||||
CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count}}
|
||||
return object; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object returned to caller with a +0 retain count}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
|
||||
}
|
||||
|
||||
CFTypeRef CFGetRuleViolation () {
|
||||
CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
|
||||
CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}}
|
||||
return object; // expected-warning{{leak}} expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'object' is returned from a function whose name ('CFGetRuleViolation') does not contain 'Copy' or 'Create'. This violates the naming convention rules given in the Memory Management Guide for Core Foundation}}
|
||||
}
|
||||
|
||||
@ -132,12 +132,12 @@ CFTypeRef CFGetRuleViolation () {
|
||||
}
|
||||
|
||||
- (id)getViolation {
|
||||
id result = [[Foo alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
|
||||
id result = [[Foo alloc] init]; // expected-note{{Method returns an instance of Foo with a +1 retain count}}
|
||||
return result; // expected-warning{{leak}} expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'result' is returned from a method whose name ('getViolation') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'. This violates the naming convention rules given in the Memory Management Guide for Cocoa}}
|
||||
}
|
||||
|
||||
- (id)copyAutorelease {
|
||||
id result = [[Foo alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
|
||||
id result = [[Foo alloc] init]; // expected-note{{Method returns an instance of Foo with a +1 retain count}}
|
||||
[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}}
|
||||
}
|
||||
@ -212,7 +212,7 @@ static int Cond;
|
||||
}
|
||||
|
||||
-(id)initY {
|
||||
self = [super init]; //expected-note {{Method returns an Objective-C object with a +1 retain count}}
|
||||
self = [super init]; //expected-note {{Method returns an instance of MyObj with a +1 retain count}}
|
||||
return self;
|
||||
}
|
||||
|
||||
@ -224,7 +224,7 @@ static int Cond;
|
||||
+(void)test {
|
||||
// initX is inlined since we explicitely mark it as interesting
|
||||
id x = [[MyObj alloc] initX]; // expected-warning {{Potential leak of an object}}
|
||||
// expected-note@-1 {{Method returns an Objective-C object with a +1 retain count}}
|
||||
// expected-note@-1 {{Method returns an instance of MyObj with a +1 retain count}}
|
||||
// expected-note@-2 {{Calling 'initX'}}
|
||||
// expected-note@-3 {{Returning from 'initX'}}
|
||||
// expected-note@-4 {{Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1}}
|
||||
@ -244,20 +244,20 @@ static int Cond;
|
||||
|
||||
|
||||
void CFOverAutorelease() {
|
||||
CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
|
||||
CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}}
|
||||
CFAutorelease(object); // expected-note{{Object autoreleased}}
|
||||
CFAutorelease(object); // 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 CFAutoreleaseUnowned() {
|
||||
CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count}}
|
||||
CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count}}
|
||||
CFAutorelease(object); // expected-note{{Object autoreleased}}
|
||||
return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased but has a +0 retain count}}
|
||||
}
|
||||
|
||||
void CFAutoreleaseUnownedMixed() {
|
||||
CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count}}
|
||||
CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count}}
|
||||
CFAutorelease(object); // expected-note{{Object autoreleased}}
|
||||
[(id)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 +0 retain count}}
|
||||
@ -393,9 +393,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -539,9 +539,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1277,9 +1277,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1498,9 +1498,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1719,9 +1719,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -1940,9 +1940,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of NSObject with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -2457,9 +2457,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -2753,9 +2753,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -2940,9 +2940,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -3688,9 +3688,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of Foo with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of Foo with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -3875,9 +3875,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of Foo with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of Foo with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -4826,9 +4826,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of MyObj with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of MyObj with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -5354,9 +5354,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>1</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of MyObj with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Method returns an instance of MyObj with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>event</string>
|
||||
@ -5563,9 +5563,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -5859,9 +5859,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
@ -6080,9 +6080,9 @@ void CFAutoreleaseUnownedMixed() {
|
||||
// CHECK-NEXT: </array>
|
||||
// CHECK-NEXT: <key>depth</key><integer>0</integer>
|
||||
// CHECK-NEXT: <key>extended_message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: <key>message</key>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
|
||||
// CHECK-NEXT: <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string>
|
||||
// CHECK-NEXT: </dict>
|
||||
// CHECK-NEXT: <dict>
|
||||
// CHECK-NEXT: <key>kind</key><string>control</string>
|
||||
|
Loading…
Reference in New Issue
Block a user