[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / ARCMT / releases.m.result
blob261175362b9bdfb194b90d600fd4fc0200fc23cf
1 // RUN: %clang_cc1 -fobjc-exceptions -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fobjc-exceptions -fblocks -fsyntax-only -x objective-c %s > %t
3 // RUN: diff %t %s.result
5 #define nil 0
7 typedef int BOOL;
9 id IhaveSideEffect(void);
11 @protocol NSObject
12 - (BOOL)isEqual:(id)object;
13 - (id)retain;
14 - (oneway void)release;
15 @end
17 @interface NSObject <NSObject> {}
18 @end
20 @interface Foo : NSObject {
21   id bar;
23 @property (strong) id bar;
24 -(void)test:(id)obj;
25 @end
27 @implementation Foo
29 @synthesize bar;
31 -(void)test:(id)obj {
32   id x = self.bar;
33   self.bar = obj;
34   // do stuff with x;
36   IhaveSideEffect();
38   x = 0;
40   @try {
41   } @finally {
42     x = nil;
43   }
45   
46 @end
48 void func(Foo *p) {
51 @interface Baz {
52         id <NSObject> _foo;
54 @end
56 @implementation Baz
57 @end
59 void block_test(Foo *p) {
60   id (^B)(void) = ^(void) {
61     if (p) {
62       id (^IB)(void) = ^(void) {
63         id bar = p;
64         return bar;
65       };
66       IB();
67     }
68     return p;
69   };
72 #define RELEASE_MACRO(x) [x release]
73 #define RELEASE_MACRO2(x) RELEASE_MACRO(x)
75 void test2(id p) {
78 @implementation Foo2
80 static id internal_var = 0;
82 + (void)setIt:(id)newone {
83     if (internal_var != newone) {
84         internal_var = newone;
85     }
87 @end