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