1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result 2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t 3 // RUN: diff %t %s.result 4 5 @interface Foo 6 @property (retain) id x; 7 @property (retain) id y; 8 @property (retain) id w; 9 @property (retain) id z; 10 @property (strong) id q; 11 @end 12 13 @implementation Foo 14 @synthesize x; 15 @synthesize y; 16 @synthesize w; 17 @synthesize q; 18 @dynamic z; 19 20 - (void) dealloc { 21 self.x = self.y = self.w = 0; 22 self.x = 0, w = 0, y = 0; 23 [self setY:0]; 24 w = 0; 25 q = 0; 26 self.z = 0; 27 } 28 @end 29 30 @interface Bar 31 @property (retain) Foo *a; 32 - (void) setA:(Foo*) val; 33 - (id) a; 34 @end 35 36 @implementation Bar 37 - (void) dealloc { 38 [self setA:0]; // This is user-defined setter overriding synthesize, don't touch it. 39 self.a.x = 0; // every dealloc must zero out its own ivar. This patter is not recognized. 40 } 41 @synthesize a; 42 - (void) setA:(Foo*) val { } 43 - (id) a {return 0;} 44 @end 45