Mercurial > hg > CbC > CbC_llvm
comparison clang/test/CodeGenObjC/dot-syntax-1.m @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | c4bab56944e8 |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // RUN: %clang_cc1 -emit-llvm -o %t %s | |
2 | |
3 int printf(const char *, ...); | |
4 | |
5 @interface Root | |
6 -(id) alloc; | |
7 -(id) init; | |
8 @end | |
9 | |
10 // Property above methods... | |
11 | |
12 @interface Top0 : Root | |
13 @property(getter=_getX,setter=_setX:) int x; | |
14 @end | |
15 | |
16 @interface Bot0 : Top0 | |
17 -(int) x; | |
18 -(void) setX: (int) arg; | |
19 @end | |
20 | |
21 @implementation Top0 | |
22 -(int) _getX { | |
23 printf("-[ Top0 _getX ]\n"); | |
24 return 0; | |
25 } | |
26 -(void) _setX: (int) arg { | |
27 printf("-[ Top0 _setX: %d ]\n", arg); | |
28 } | |
29 @end | |
30 | |
31 @implementation Bot0 | |
32 -(int) x { | |
33 printf("-[ Bot0 _getX ]\n"); | |
34 return 0; | |
35 } | |
36 -(void) setX: (int) arg { | |
37 printf("-[ Bot0 _setX: %d ]\n", arg); | |
38 } | |
39 @end | |
40 | |
41 // Methods above property... | |
42 | |
43 @interface Top1 : Root | |
44 -(int) x; | |
45 -(void) setX: (int) arg; | |
46 @end | |
47 | |
48 @interface Bot1 : Top1 | |
49 @property(getter=_getX,setter=_setX:) int x; | |
50 @end | |
51 | |
52 @implementation Top1 | |
53 -(int) x { | |
54 printf("-[ Top1 x ]\n"); | |
55 return 0; | |
56 } | |
57 -(void) setX: (int) arg { | |
58 printf("-[ Top1 setX: %d ]\n", arg); | |
59 } | |
60 @end | |
61 | |
62 @implementation Bot1 | |
63 -(int) _getX { | |
64 printf("-[ Bot1 _getX ]\n"); | |
65 return 0; | |
66 } | |
67 -(void) _setX: (int) arg { | |
68 printf("-[ Bot1 _setX: %d ]\n", arg); | |
69 } | |
70 @end | |
71 | |
72 // Mixed setter & getter (variant 1) | |
73 | |
74 @interface Top2 : Root | |
75 -(int) x; | |
76 -(void) _setX: (int) arg; | |
77 @end | |
78 | |
79 @interface Bot2 : Top2 | |
80 @property(getter=_getX,setter=_setX:) int x; | |
81 @end | |
82 | |
83 @implementation Top2 | |
84 -(int) x { | |
85 printf("-[ Top2 x ]\n"); | |
86 return 0; | |
87 } | |
88 -(void) _setX: (int) arg { | |
89 printf("-[ Top2 _setX: %d ]\n", arg); | |
90 } | |
91 @end | |
92 | |
93 @implementation Bot2 | |
94 -(int) _getX { | |
95 printf("-[ Bot2 _getX ]\n"); | |
96 return 0; | |
97 } | |
98 -(void) setX: (int) arg { | |
99 printf("-[ Bot2 setX: %d ]\n", arg); | |
100 } | |
101 @end | |
102 | |
103 // Mixed setter & getter (variant 2) | |
104 | |
105 @interface Top3 : Root | |
106 -(int) _getX; | |
107 -(void) setX: (int) arg; | |
108 @end | |
109 | |
110 @interface Bot3 : Top3 | |
111 @property(getter=_getX,setter=_setX:) int x; | |
112 @end | |
113 | |
114 @implementation Top3 | |
115 -(int) _getX { | |
116 printf("-[ Top3 _getX ]\n"); | |
117 return 0; | |
118 } | |
119 -(void) setX: (int) arg { | |
120 printf("-[ Top3 setX: %d ]\n", arg); | |
121 } | |
122 @end | |
123 | |
124 @implementation Bot3 | |
125 -(int) x { | |
126 printf("-[ Bot3 x ]\n"); | |
127 return 0; | |
128 } | |
129 -(void) _setX: (int) arg { | |
130 printf("-[ Bot3 _setX: %d ]\n", arg); | |
131 } | |
132 @end | |
133 | |
134 // Mixed setter & getter (variant 3) | |
135 | |
136 @interface Top4 : Root | |
137 @property(getter=_getX,setter=_setX:) int x; | |
138 @end | |
139 | |
140 @interface Bot4 : Top4 | |
141 -(int) _getX; | |
142 -(void) setX: (int) arg; | |
143 @end | |
144 | |
145 @implementation Top4 | |
146 -(int) x { | |
147 printf("-[ Top4 x ]\n"); | |
148 return 0; | |
149 } | |
150 -(void) _setX: (int) arg { | |
151 printf("-[ Top4 _setX: %d ]\n", arg); | |
152 } | |
153 @end | |
154 | |
155 @implementation Bot4 | |
156 -(int) _getX { | |
157 printf("-[ Bot4 _getX ]\n"); | |
158 return 0; | |
159 } | |
160 -(void) setX: (int) arg { | |
161 printf("-[ Bot4 setX: %d ]\n", arg); | |
162 } | |
163 @end | |
164 | |
165 // Mixed setter & getter (variant 4) | |
166 | |
167 @interface Top5 : Root | |
168 @property(getter=_getX,setter=_setX:) int x; | |
169 @end | |
170 | |
171 @interface Bot5 : Top5 | |
172 -(int) x; | |
173 -(void) _setX: (int) arg; | |
174 @end | |
175 | |
176 @implementation Top5 | |
177 -(int) _getX { | |
178 printf("-[ Top5 _getX ]\n"); | |
179 return 0; | |
180 } | |
181 -(void) setX: (int) arg { | |
182 printf("-[ Top5 setX: %d ]\n", arg); | |
183 } | |
184 @end | |
185 | |
186 @implementation Bot5 | |
187 -(int) x { | |
188 printf("-[ Bot5 x ]\n"); | |
189 return 0; | |
190 } | |
191 -(void) _setX: (int) arg { | |
192 printf("-[ Bot5 _setX: %d ]\n", arg); | |
193 } | |
194 @end | |
195 | |
196 // Mixed level calls (variant 1) | |
197 | |
198 @interface Top6 : Root | |
199 -(int) x; | |
200 @end | |
201 | |
202 @interface Bot6 : Top6 | |
203 -(void) setX: (int) arg; | |
204 @end | |
205 | |
206 @implementation Top6 | |
207 -(int) x { | |
208 printf("-[ Top6 x ]\n"); | |
209 return 0; | |
210 } | |
211 @end | |
212 | |
213 @implementation Bot6 | |
214 -(void) setX: (int) arg { | |
215 printf("-[ Bot5 setX: %d ]\n", arg); | |
216 } | |
217 @end | |
218 | |
219 // Mixed level calls (variant 1) | |
220 | |
221 @interface Top7 : Root | |
222 -(void) setX: (int) arg; | |
223 @end | |
224 | |
225 @interface Bot7 : Top7 | |
226 -(int) x; | |
227 @end | |
228 | |
229 @implementation Top7 | |
230 -(void) setX: (int) arg { | |
231 printf("-[ Top7 setX: %d ]\n", arg); | |
232 } | |
233 @end | |
234 | |
235 @implementation Bot7 | |
236 -(int) x { | |
237 printf("-[ Bot7 x ]\n"); | |
238 return 0; | |
239 } | |
240 @end | |
241 | |
242 // | |
243 | |
244 // FIXME: Two more (thats it?) interesting cases. Method access on | |
245 // getter w/o setter and method access on setter w/o getter. | |
246 | |
247 int main() { | |
248 #define test(N) { \ | |
249 Bot##N *ob = [[Bot##N alloc] init]; \ | |
250 int x = ob.x; \ | |
251 ob.x = 10; } | |
252 | |
253 test(0); | |
254 test(1); | |
255 test(2); | |
256 test(3); | |
257 test(4); | |
258 test(5); | |
259 // test(6); | |
260 // test(7); | |
261 | |
262 return 0; | |
263 } | |
264 |