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 (strong) id x; 7 @property (strong) id y; 8 @property (strong) id w; 9 @property (strong) 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.z = 0; 22 } 23 @end 24 25 @interface Bar 26 @property (strong) Foo *a; 27 - (void) setA:(Foo*) val; 28 - (id) a; 29 @end 30 31 @implementation Bar 32 - (void) dealloc { 33 [self setA:0]; // This is user-defined setter overriding synthesize, don't touch it. 34 self.a.x = 0; // every dealloc must zero out its own ivar. This patter is not recognized. 35 } 36 @synthesize a; 37 - (void) setA:(Foo*) val { } 38 - (id) a {return 0;} 39 @end 40