diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-04-28 21:43:40 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-04-28 21:43:40 +0000 |
commit | c613f4e37558ed392351e08cc1cb52157075c661 (patch) | |
tree | 36ff29cc67888981341a353e66016921f51cd7e8 | |
parent | 5998da5c29dae3f654cb65738ff237203e2222c8 (diff) |
Improve retain/release test cases for ownership attributes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70327 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/Analysis/retain-release-gc-only.m | 22 | ||||
-rw-r--r-- | test/Analysis/retain-release.m | 28 |
2 files changed, 46 insertions, 4 deletions
diff --git a/test/Analysis/retain-release-gc-only.m b/test/Analysis/retain-release-gc-only.m index 91f3541ce4..d4871f4de1 100644 --- a/test/Analysis/retain-release-gc-only.m +++ b/test/Analysis/retain-release-gc-only.m @@ -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]; diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m index ef10ce32b6..20f31dce2d 100644 --- a/test/Analysis/retain-release.m +++ b/test/Analysis/retain-release.m @@ -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]; |