]> granicus.if.org Git - clang/commitdiff
Improve retain/release test cases for ownership attributes.
authorTed Kremenek <kremenek@apple.com>
Tue, 28 Apr 2009 21:43:40 +0000 (21:43 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 28 Apr 2009 21:43:40 +0000 (21:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70327 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/retain-release-gc-only.m
test/Analysis/retain-release.m

index 91f3541ce4b1618b8d3e8eaa1dd785795e3e1b6b..d4871f4de1f1d2a92fea0e8a7995f66f536cdb54 100644 (file)
@@ -152,13 +152,31 @@ void test_attr_3(TestOwnershipAttr *X) {
   [str release];
 }
 
-void test_attr_4(TestOwnershipAttr *X) {
+void test_attr_4a(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // no-warning
+}
+
+void test_attr_4b(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // no-warning
+  [X myRelease:str];
+}
+
+void test_attr_4c(TestOwnershipAttr *X) {
   NSString *str = [X returnsAnOwnedString]; // no-warning
   [X myRetain:str];
   [X myRelease:str];
 }
 
-void test_attr_5(TestOwnershipAttr *X) {
+void test_attr_5a(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // no-waring
+}
+
+void test_attr_5b(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString];
+  [X myCFRelease:str];  // expected-warning{{Incorrect decrement of the reference count of an object is not owned at this point by the caller}}
+}
+
+void test_attr_5c(TestOwnershipAttr *X) {
   NSString *str = [X returnsAnOwnedString]; // no-warning
   [X myCFRetain:str];
   [X myCFRelease:str];
index ef10ce32b6578ae7f154396e045e79cdd15da3b0..20f31dce2ddd2428b047ce3eaf23cebcce40f223 100644 (file)
@@ -433,13 +433,37 @@ void test_attr_3(TestOwnershipAttr *X) {
   [str release];
 }
 
-void test_attr_4(TestOwnershipAttr *X) {
+void test_attr_4a(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
+}
+
+void test_attr_4b(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // no-warning
+  [X myRelease:str];
+}
+
+void test_attr_4c(TestOwnershipAttr *X) {
   NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
   [X myRetain:str];
   [X myRelease:str];
 }
 
-void test_attr_5(TestOwnershipAttr *X) {
+void test_attr_4d(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString];
+  [X myRelease:str];
+  [X myRelease:str]; // expected-warning{{Reference-counted object is used after it is released}}
+}
+
+void test_attr_5a(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
+}
+
+void test_attr_5b(TestOwnershipAttr *X) {
+  NSString *str = [X returnsAnOwnedString]; // no-warning
+  [X myCFRelease:str];
+}
+
+void test_attr_5c(TestOwnershipAttr *X) {
   NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
   [X myCFRetain:str];
   [X myCFRelease:str];