xref: /minix3/external/bsd/llvm/dist/clang/test/FixIt/auto-isa-fixit.m (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
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