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