1 // RUN: cp %s %t 2 // RUN: %clang_cc1 -x objective-c -fixit %t 3 // RUN: %clang_cc1 -x objective-c -Werror %t 4 // rdar://13503456 5 6 void object_setClass(id, id); 7 Class object_getClass(id); 8 9 id rhs(); 10 11 Class pr6302(id x123) { 12 x123->isa = 0; 13 x123->isa = rhs(); 14 x123->isa = (id)(x123->isa); 15 x123->isa = (id)x123->isa; 16 x123->isa = (x123->isa); 17 x123->isa = (id)(x123->isa); 18 return x123->isa; 19 } 20 21 22 @interface BaseClass { 23 @public 24 Class isa; // expected-note 3 {{instance variable is declared here}} 25 } 26 @end 27 28 @interface OtherClass { 29 @public 30 id firstIvar; 31 Class isa; // note, not first ivar; 32 } 33 @end 34 35 @interface Subclass : BaseClass @end 36 37 @interface SiblingClass : BaseClass @end 38 39 @interface Root @end 40 41 @interface hasIsa : Root { 42 @public 43 Class isa; // note, isa is not in root class 44 } 45 @end 46 47 @implementation Subclass 48 -(void)method { 49 hasIsa *u; 50 id v; 51 BaseClass *w; 52 Subclass *x; 53 SiblingClass *y; 54 OtherClass *z; 55 (void)v->isa; 56 (void)w->isa; 57 (void)x->isa; 58 (void)y->isa; 59 (void)z->isa; 60 (void)u->isa; 61 y->isa = 0; 62 y->isa = w->isa; 63 x->isa = rhs(); 64 } 65 @end 66 67