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