diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-06-03 19:19:06 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-06-03 19:19:06 +0000 |
commit | 56db7e8074e4144ec6ae35a87c3680cfbb3a18ca (patch) | |
tree | 9ac943e2e8c3067a3f065cf106c566cad09c4fc8 | |
parent | f4b8fea84a6b1ef74cf8fe572918439e34935e51 (diff) |
Add more retain-checker tests for GC mode when using NSMakeCollectable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72799 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/Analysis/retain-release-gc-only.m | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/test/Analysis/retain-release-gc-only.m b/test/Analysis/retain-release-gc-only.m index 70ad54f8aa..cc4a40db09 100644 --- a/test/Analysis/retain-release-gc-only.m +++ b/test/Analysis/retain-release-gc-only.m @@ -101,6 +101,11 @@ extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn stat CFTypeRef CFMakeCollectable(CFTypeRef cf) ; +static __inline__ __attribute__((always_inline)) id NSMakeCollectable(CFTypeRef +cf) { + return cf ? (id)CFMakeCollectable(cf) : ((void*)0); +} + //===----------------------------------------------------------------------===// // Test cases. //===----------------------------------------------------------------------===// @@ -124,6 +129,31 @@ void f3() { CFRetain(A); } +void f3b() { + CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning + CFMakeCollectable(A); +} + + +void f4() { + CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}} + NSMakeCollectable(A); + CFRetain(A); +} + +void f4b() { + CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning + NSMakeCollectable(A); +} + +void f5() { + id x = [NSMakeCollectable(CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks)) autorelease]; // no-warning +} + +void f5b() { + id x = [(id) CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks) autorelease]; // expected-warning{{leak}} +} + // Test return of non-owned objects in contexts where an owned object // is expected. @interface TestReturnNotOwnedWhenExpectedOwned @@ -133,7 +163,7 @@ void f3() { @implementation TestReturnNotOwnedWhenExpectedOwned - (NSString*)newString { - NSString *s = [NSString stringWithUTF8String:"hello"]; // expected-warning{{Potential leak (when using garbage collection) of an object allocated on line 136 and stored into 's'}} + NSString *s = [NSString stringWithUTF8String:"hello"]; // expected-warning{{Potential leak (when using garbage collection) of an object allocated}} CFRetain(s); return s; } |