[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang / test / SemaObjC / ivar-lookup.m
blob898ffac99692ceda1106b8a47eba550af0eafcb7
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
3 @interface Test {
4    int x;
7 -(void) setX: (int) d;
8 @end
10 extern struct foo x;
12 @implementation Test
14 -(void) setX: (int) n {
15    x = n;
18 @end
20 @interface Ivar
21 - (float*)method;
22 @end
24 @interface A {
25   A *Ivar;
27 - (int*)method;
28 @end
30 @implementation A
31 - (int*)method {
32   int *ip = [Ivar method]; // expected-warning{{incompatible pointer types initializing 'int *' with an expression of type 'float *'}}
33                            // Note that there is no warning in Objective-C++
34   return 0;
36 @end
38 @interface TwoIvars {
39   int a;
40   int b;
42 @end
44 @implementation TwoIvars
45 + (int)classMethod {
46   return a + b; // expected-error{{instance variable 'a' accessed in class method}} \
47   // expected-error{{instance variable 'b' accessed in class method}}
49 @end
51 @interface Radar10309454
53   int IVAR; // expected-note 4 {{previous definition is here}}
55 @end
57 @interface Radar10309454()
59   int IVAR; // expected-error {{instance variable is already declared}}
60   int PIVAR; // expected-note {{previous definition is here}}
62 @end
64 @interface Radar10309454()
66   int IVAR; // expected-error {{instance variable is already declared}}
68 @end
70 @interface Radar10309454()
72   int IVAR; // expected-error {{instance variable is already declared}}
73   int PIVAR; // expected-error {{instance variable is already declared}}
75 @end
77 @implementation Radar10309454
79   int IVAR; // expected-error {{instance variable is already declared}}
81 @end
83 // PR5984
84 @interface Radar14037151 {
85   int myStatus;
87 - (int) test;
88 @end
90 @implementation Radar14037151
91 - (int) test
93   myStatus = 1;     // works
94    __typeof(myStatus) __in;  // works.
95   union U {
96     __typeof(myStatus) __in;  // fails.
97   };
98   struct S {
99     __typeof(myStatus) __in;  // fails.
100     struct S1 { // expected-warning {{declaration does not declare anything}}
101       __typeof(myStatus) __in;  // fails.
102       struct S { // expected-warning {{declaration does not declare anything}}
103         __typeof(myStatus) __in;  // fails.
104       };
105     };
106   };
108   return 0;
110 @end
112 @class NSString, NSData, NSNumber;
114 @interface NSObject
116   Class isa;
118 @end
120 @interface Foo
122   int a;
123   NSString* b;
124   NSData* c;
126 @end
128 @interface Bar : Foo
129 @end
131 @interface Bar () {
132         NSString *q_strong;
133         NSNumber *r_strong;
134         int d; // expected-note {{previous definition is here}}
135         NSString *e_strong; // expected-note {{previous definition is here}}
136         NSData *f_weak; // expected-note {{previous definition is here}}
137         int g; // expected-note 2 {{previous definition is here}}
139 @end
141 @interface Bar () {
142         int g; // expected-note {{previous definition is here}} \
143                // expected-error {{instance variable is already declared}}
145 @end
147 @implementation Bar {
148         int d; // expected-error {{instance variable is already declared}}
149         NSString *e_strong; // expected-error {{instance variable is already declared}}
150         NSData *f_weak; // expected-error {{instance variable is already declared}}
151         NSData *g; // expected-error 2 {{instance variable is already declared}}
153 @end