1// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result 2// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t 3// RUN: diff %t %s.result 4 5#include "Common.h" 6 7id 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 55id foo (Foo *p) { 56 p = [p retain]; 57 return ([p retain]); 58} 59 60void 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