[analyzer] Better test for r178063.
authorAnna Zaks <ganna@apple.com>
Tue, 26 Mar 2013 23:58:52 +0000 (23:58 +0000)
committerAnna Zaks <ganna@apple.com>
Tue, 26 Mar 2013 23:58:52 +0000 (23:58 +0000)
Jordan pointed out that my previously committed test was bogus.

llvm-svn: 178094

clang/test/Analysis/retain-release-inline.m

index c89f58e..8809c8c 100644 (file)
@@ -364,27 +364,32 @@ CFStringRef testCovariantReturnType() {
 
 // Test that we reanalyze ObjC methods which have been inlined. When reanalyzing
 // them, make sure we inline very small functions.
+id returnInputParam(id x) {
+  return x;
+}
 
 @interface MyClass : NSObject
-- (id)test_return_retained_NS;
-- (void)test_return_retained;
+- (id)test_reanalyze_as_top_level;
+- (void)test_inline_tiny_when_reanalyzing;
+- (void)inline_test_reanalyze_as_top_level;
 @end
 
-id returnInputParam(id x) {
-  return x;
-}
 @implementation MyClass
-- (id)test_return_retained_NS {
+- (void)test_inline_tiny_when_reanalyzing {
+  id x = [[NSString alloc] init]; // no-warning
+  x = returnInputParam(x);
+  [x release];
+}
+
+- (id)test_reanalyze_as_top_level {
   // This method does not follow naming conventions, so a warning will be
   // reported when it is reanalyzed at top level.
-  return returnInputParam([[NSString alloc] init]); // expected-warning {{leak}}
+  return [[NSString alloc] init]; // expected-warning {{leak}}
 }
 
-- (void)test_return_retained {
-  id x = test_return_retained_NS(); // expected-warning {{leak}}
-  [x retain];
+- (void)inline_test_reanalyze_as_top_level {
+  id x = [self test_reanalyze_as_top_level];
   [x release];
+  [self test_inline_tiny_when_reanalyzing];
 }
-
 @end
-