| // RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result | 
 | // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t | 
 | // RUN: diff %t %s.result | 
 |  | 
 | #include "Common.h" | 
 |  | 
 | id IhaveSideEffect(); | 
 |  | 
 | @interface Foo : NSObject { | 
 |   id bar; | 
 | } | 
 | @property (strong) id bar; | 
 | -(id)test:(id)obj; | 
 | -(id)something; | 
 | @end | 
 |  | 
 | #define Something_Macro(key, comment) \ | 
 |  [[Foo new] something] | 
 |  | 
 | @implementation Foo | 
 |  | 
 | @synthesize bar; | 
 |  | 
 | -(id)something {} | 
 |  | 
 | -(id)test:(id)obj { | 
 |   id x = self.bar; | 
 |   self.bar = obj; | 
 |  | 
 |   Something_Macro(@"foo", "@bar"); | 
 |  | 
 |   IhaveSideEffect(); | 
 |  | 
 |   [self something]; | 
 |  | 
 |   [self something]; | 
 |  | 
 |   IhaveSideEffect(); | 
 |   // do stuff with x; | 
 |   return self; | 
 | } | 
 |    | 
 | - (id)test1 { | 
 |   id x=0; | 
 |   return (((x))); | 
 | } | 
 | @end | 
 |  | 
 | id foo (Foo *p) { | 
 |     p = p; | 
 |     return (p); | 
 | } | 
 |  | 
 | void block_tests(Foo *p) { | 
 |   id (^B)() = ^() { | 
 |     if (p) { | 
 |       id (^IB)() = ^() { | 
 |         id bar = p; | 
 |         return bar; | 
 |       }; | 
 |       IB(); | 
 |     } | 
 |     return p; | 
 |   }; | 
 | } |