diff options
| author | Ted Kremenek <kremenek@apple.com> | 2009-02-18 22:11:23 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2009-02-18 22:11:23 +0000 |
| commit | 443e040d06091aa5d86cfcba0f7268c3ac64ba6f (patch) | |
| tree | 336d38a1e01650f8a9f416a8cd3c865d66548dc6 /clang | |
| parent | ea3a9e270cc73fbde3e0f7c132f845a74adb9467 (diff) | |
| download | bcm5719-llvm-443e040d06091aa5d86cfcba0f7268c3ac64ba6f.tar.gz bcm5719-llvm-443e040d06091aa5d86cfcba0f7268c3ac64ba6f.zip | |
Add a few more GC-only test cases for the retain/release checker.
llvm-svn: 64960
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/test/Analysis/retain-release-gc-only.m | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/clang/test/Analysis/retain-release-gc-only.m b/clang/test/Analysis/retain-release-gc-only.m index 32a9c877ac1..231eec9aa69 100644 --- a/clang/test/Analysis/retain-release-gc-only.m +++ b/clang/test/Analysis/retain-release-gc-only.m @@ -13,6 +13,7 @@ typedef const struct __CFAllocator * CFAllocatorRef; extern const CFAllocatorRef kCFAllocatorDefault; extern CFTypeRef CFRetain(CFTypeRef cf); extern void CFRelease(CFTypeRef cf); +CFTypeRef CFMakeCollectable(CFTypeRef cf); typedef struct { } CFArrayCallBacks; @@ -75,7 +76,20 @@ extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn stat //===----------------------------------------------------------------------===// void f1() { - CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); + CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning id x = [(id) A autorelease]; - CFRelease((CFMutableArrayRef) x); // no-warning + CFRelease((CFMutableArrayRef) x); +} + +void f2() { + CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}} + id x = [(id) A retain]; + [x release]; + [x release]; +} + +void f3() { + CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}} + CFMakeCollectable(A); + CFRetain(A); } |

