| // RUN: cp %s %t |
| // RUN: %clang_cc1 -x objective-c -fixit %t |
| // RUN: %clang_cc1 -x objective-c -Werror %t |
| // rdar://13503456 |
| |
| void object_setClass(id, id); |
| Class object_getClass(id); |
| |
| id rhs(); |
| |
| Class pr6302(id x123) { |
| x123->isa = 0; |
| x123->isa = rhs(); |
| x123->isa = (id)(x123->isa); |
| x123->isa = (id)x123->isa; |
| x123->isa = (x123->isa); |
| x123->isa = (id)(x123->isa); |
| return x123->isa; |
| } |
| |
| |
| @interface BaseClass { |
| @public |
| Class isa; // expected-note 3 {{instance variable is declared here}} |
| } |
| @end |
| |
| @interface OtherClass { |
| @public |
| id firstIvar; |
| Class isa; // note, not first ivar; |
| } |
| @end |
| |
| @interface Subclass : BaseClass @end |
| |
| @interface SiblingClass : BaseClass @end |
| |
| @interface Root @end |
| |
| @interface hasIsa : Root { |
| @public |
| Class isa; // note, isa is not in root class |
| } |
| @end |
| |
| @implementation Subclass |
| -(void)method { |
| hasIsa *u; |
| id v; |
| BaseClass *w; |
| Subclass *x; |
| SiblingClass *y; |
| OtherClass *z; |
| (void)v->isa; |
| (void)w->isa; |
| (void)x->isa; |
| (void)y->isa; |
| (void)z->isa; |
| (void)u->isa; |
| y->isa = 0; |
| y->isa = w->isa; |
| x->isa = rhs(); |
| } |
| @end |
| |