Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
      2 
      3 @interface I {
      4   int Y;
      5 }
      6 @property int X;
      7 @property int Y;
      8 @property int Z;
      9 @end
     10 
     11 @implementation I
     12 @dynamic X; // expected-note {{previous declaration is here}}
     13 @dynamic X; // expected-error {{property 'X' is already implemented}}
     14 @synthesize Y; // expected-note {{previous use is here}}
     15 @synthesize Z=Y; // expected-error {{synthesized properties 'Z' and 'Y' both claim instance variable 'Y'}}
     16 @end
     17 
     18 // rdar://8703553
     19 @interface IDEPathCell 
     20 {
     21 @private
     22     id _gradientStyle;
     23 }
     24 
     25 @property (readwrite, assign, nonatomic) id gradientStyle;
     26 @end
     27 
     28 @implementation IDEPathCell
     29 
     30 @synthesize gradientStyle = _gradientStyle;
     31 - (void)setGradientStyle:(id)value { }
     32 
     33 + (id)_componentCellWithRepresentedObject {
     34     return self.gradientStyle;
     35 }
     36 @end
     37 
     38 // rdar://11054153
     39 @interface rdar11054153
     40 @property int P; // expected-error {{type of property 'P' ('int') does not match type of accessor 'P' ('void')}}
     41 - (void)P; // expected-note {{declared here}}
     42 
     43 @property int P1; // expected-warning {{type of property 'P1' does not match type of accessor 'P1'}} 
     44 - (double) P1; // expected-note {{declared here}}
     45 
     46 @property int P2; // expected-error {{type of property 'P2' ('int') does not match type of accessor 'P2' ('double *')}}
     47 - (double*)P2; // expected-note {{declared here}}
     48 
     49 @end
     50