summaryrefslogtreecommitdiffstats
path: root/test/Analysis
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-06-03 21:11:25 +0000
committered <ed@FreeBSD.org>2009-06-03 21:11:25 +0000
commit9e262ca77e924f9d84a864b031a1b931d03c5e38 (patch)
treef0e24d4185187f7d15274dee4bc53908e30f5b76 /test/Analysis
parent48ecc7affef226b2bac1e08bdfdc059306a1734c (diff)
downloadFreeBSD-src-9e262ca77e924f9d84a864b031a1b931d03c5e38.zip
FreeBSD-src-9e262ca77e924f9d84a864b031a1b931d03c5e38.tar.gz
Import Clang, at r72805.
Diffstat (limited to 'test/Analysis')
-rw-r--r--test/Analysis/retain-release-gc-only.m32
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 70ad54f..cc4a40d 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;
}
OpenPOWER on IntegriCloud