]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/FixIt/auto-isa-fixit.m
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / FixIt / auto-isa-fixit.m
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