Home | History | Annotate | Download | only in ARCMT
      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