Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
      2 
      3 @interface SomeClass  @end
      4 
      5 int fn1(SomeClass *obj) {
      6         obj->privateIvar = 1; // expected-error {{'SomeClass' does not have a member named 'privateIvar}}
      7         return obj->publicIvar;     // expected-error {{'SomeClass' does not have a member named 'publicIvar'}}
      8 }
      9 
     10 @interface SomeClass () {
     11 // @private by default
     12         int privateIvar;
     13 @public
     14         int publicIvar;
     15 }
     16 @end
     17 
     18 int fn2(SomeClass *obj) {
     19 	obj->publicIvar = 1;
     20         return obj->publicIvar    // ok
     21              + obj->privateIvar;  // expected-error {{instance variable 'privateIvar' is private}}
     22 }
     23 
     24 @implementation SomeClass
     25 
     26 int fn3(SomeClass *obj) {
     27 	obj->privateIvar = 2;
     28         return obj->publicIvar    // ok
     29              + obj->privateIvar;  // ok
     30     }
     31 @end
     32 
     33 @interface SomeClass (Category)
     34     {	
     35         int categoryIvar; // expected-error {{instance variables may not be placed in categories}}
     36     }
     37 @end
     38 
     39 @interface SomeClass (Category1)
     40     {	
     41     }
     42 @end
     43