// RUN: %clang_cc1 -fobjc-exceptions -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fobjc-exceptions -fblocks -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result #define nil 0 typedef int BOOL; id IhaveSideEffect(); @protocol NSObject - (BOOL)isEqual:(id)object; - (id)retain; - (oneway void)release; @end @interface NSObject <NSObject> {} @end @interface Foo : NSObject { id bar; } @property (strong) id bar; -(void)test:(id)obj; @end @implementation Foo @synthesize bar; -(void)test:(id)obj { id x = self.bar; self.bar = obj; // do stuff with x; IhaveSideEffect(); x = 0; @try { } @finally { x = nil; } } @end void func(Foo *p) { } @interface Baz { id <NSObject> _foo; } @end @implementation Baz @end void block_test(Foo *p) { id (^B)() = ^() { if (p) { id (^IB)() = ^() { id bar = p; return bar; }; IB(); } return p; }; } #define RELEASE_MACRO(x) [x release] #define RELEASE_MACRO2(x) RELEASE_MACRO(x) void test2(id p) { } @implementation Foo2 static id internal_var = 0; + (void)setIt:(id)newone { if (internal_var != newone) { internal_var = newone; } } @end