xref: /aosp_15_r20/external/clang/test/FixIt/auto-isa-fixit.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
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