1*67e74705SXin Li// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result 2*67e74705SXin Li// RUN: cp %s %t 3*67e74705SXin Li// RUN: %clang_cc1 -arcmt-modify -triple x86_64-apple-macosx10.6 -x objective-c %t 4*67e74705SXin Li// RUN: diff %t %s.result 5*67e74705SXin Li// RUN: rm %t 6*67e74705SXin Li 7*67e74705SXin Litypedef int BOOL; 8*67e74705SXin Li 9*67e74705SXin Liid IhaveSideEffect(); 10*67e74705SXin Li 11*67e74705SXin Li@protocol NSObject 12*67e74705SXin Li- (BOOL)isEqual:(id)object; 13*67e74705SXin Li- (id)retain; 14*67e74705SXin Li- (oneway void)release; 15*67e74705SXin Li@end 16*67e74705SXin Li 17*67e74705SXin Li@interface NSObject <NSObject> {} 18*67e74705SXin Li@end 19*67e74705SXin Li 20*67e74705SXin Li@interface Foo : NSObject { 21*67e74705SXin Li id bar; 22*67e74705SXin Li} 23*67e74705SXin Li@property (strong) id bar; 24*67e74705SXin Li-(void)test:(id)obj; 25*67e74705SXin Li@end 26*67e74705SXin Li 27*67e74705SXin Li@implementation Foo 28*67e74705SXin Li 29*67e74705SXin Li@synthesize bar; 30*67e74705SXin Li 31*67e74705SXin Li-(void)test:(id)obj { 32*67e74705SXin Li id x = self.bar; 33*67e74705SXin Li self.bar = obj; 34*67e74705SXin Li // do stuff with x; 35*67e74705SXin Li 36*67e74705SXin Li IhaveSideEffect(); 37*67e74705SXin Li 38*67e74705SXin Li x = 0; 39*67e74705SXin Li} 40*67e74705SXin Li 41*67e74705SXin Li@end 42*67e74705SXin Li 43*67e74705SXin Livoid func(Foo *p) { 44*67e74705SXin Li} 45*67e74705SXin Li 46*67e74705SXin Li@interface Baz { 47*67e74705SXin Li id <NSObject> _foo; 48*67e74705SXin Li} 49*67e74705SXin Li@end 50*67e74705SXin Li 51*67e74705SXin Li@implementation Baz 52*67e74705SXin Li@end 53*67e74705SXin Li 54*67e74705SXin Li#define RELEASE_MACRO(x) [x release] 55*67e74705SXin Li#define RELEASE_MACRO2(x) RELEASE_MACRO(x) 56*67e74705SXin Li 57*67e74705SXin Livoid test2(id p) { 58*67e74705SXin Li} 59