1 // RUN: %clang_cc1 -fobjc-nonfragile-abi -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result 2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fobjc-nonfragile-abi -fsyntax-only -x objective-c %s > %t 3 // RUN: diff %t %s.result 4 5 #include "Common.h" 6 7 id IhaveSideEffect(); 8 9 @interface Foo : NSObject { 10 id bar; 11 } 12 @property (retain) id bar; 13 -(id)test:(id)obj; 14 -(id)something; 15 @end 16 17 #define Something_Macro(key, comment) \ 18 [[Foo new] something] 19 20 @implementation Foo 21 22 @synthesize bar; 23 24 -(id)something {} 25 26 -(id)test:(id)obj { 27 id x = self.bar; 28 [x retain]; 29 self.bar = obj; 30 if (obj) 31 [obj retain]; 32 33 [Something_Macro(@"foo", "@bar") retain]; 34 35 [IhaveSideEffect() retain]; 36 37 [[self something] retain]; 38 39 [[self retain] something]; 40 41 [[IhaveSideEffect() retain] release]; 42 [[x retain] release]; 43 // do stuff with x; 44 [x release]; 45 return [self retain]; 46 } 47 48 - (id)test1 { 49 id x=0; 50 ([x retain]); 51 return ((([x retain]))); 52 } 53 @end 54 55 id foo (Foo *p) { 56 p = [p retain]; 57 return ([p retain]); 58 } 59 60 void block_tests(Foo *p) { 61 id (^B)() = ^() { 62 if (p) { 63 id (^IB)() = ^() { 64 id bar = [p retain]; 65 return bar; 66 }; 67 IB(); 68 } 69 return [p retain]; 70 }; 71 } 72