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