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