| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result |
| // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t |
| // RUN: diff %t %s.result |
| |
| @interface Foo |
| @property (strong) id x; |
| @property (strong) id y; |
| @property (strong) id w; |
| @property (strong) id z; |
| @property (strong) id q; |
| @end |
| |
| @implementation Foo |
| @synthesize x; |
| @synthesize y; |
| @synthesize w; |
| @synthesize q; |
| @dynamic z; |
| |
| - (void) dealloc { |
| self.z = 0; |
| } |
| @end |
| |
| @interface Bar |
| @property (strong) Foo *a; |
| - (void) setA:(Foo*) val; |
| - (id) a; |
| @end |
| |
| @implementation Bar |
| - (void) dealloc { |
| [self setA:0]; // This is user-defined setter overriding synthesize, don't touch it. |
| self.a.x = 0; // every dealloc must zero out its own ivar. This patter is not recognized. |
| } |
| @synthesize a; |
| - (void) setA:(Foo*) val { } |
| - (id) a {return 0;} |
| @end |