Home | History | Annotate | Download | only in FixIt
      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