diff options
Diffstat (limited to 'test/FixIt/auto-isa-fixit.m')
-rw-r--r-- | test/FixIt/auto-isa-fixit.m | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/test/FixIt/auto-isa-fixit.m b/test/FixIt/auto-isa-fixit.m new file mode 100644 index 0000000000..3f22c1838a --- /dev/null +++ b/test/FixIt/auto-isa-fixit.m @@ -0,0 +1,66 @@ +// 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 + |