blob: e381ca7c93a5f8f5a01e838e51629ff50ddfe833 [file] [log] [blame]
Nicolas Geoffray796d6302016-03-13 22:22:31 +00001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17interface Itf {
18 public Class<?> method1();
19 public Class<?> method2();
20 public Class<?> method3();
21 public Class<?> method4();
22 public Class<?> method5();
23 public Class<?> method6();
24 public Class<?> method7();
25 public Class<?> method8();
26 public Class<?> method9();
27 public Class<?> method10();
28 public Class<?> method11();
29 public Class<?> method12();
30 public Class<?> method13();
31 public Class<?> method14();
32 public Class<?> method15();
33 public Class<?> method16();
34 public Class<?> method17();
35 public Class<?> method18();
36 public Class<?> method19();
37 public Class<?> method20();
38 public Class<?> method21();
39 public Class<?> method22();
40 public Class<?> method23();
41 public Class<?> method24();
42 public Class<?> method25();
43 public Class<?> method26();
44 public Class<?> method27();
45 public Class<?> method28();
46 public Class<?> method29();
47 public Class<?> method30();
48 public Class<?> method31();
49 public Class<?> method32();
50 public Class<?> method33();
51 public Class<?> method34();
52 public Class<?> method35();
53 public Class<?> method36();
54 public Class<?> method37();
55 public Class<?> method38();
56 public Class<?> method39();
57 public Class<?> method40();
58 public Class<?> method41();
59 public Class<?> method42();
60 public Class<?> method43();
61 public Class<?> method44();
62 public Class<?> method45();
63 public Class<?> method46();
64 public Class<?> method47();
65 public Class<?> method48();
66 public Class<?> method49();
67 public Class<?> method50();
68 public Class<?> method51();
69 public Class<?> method52();
70 public Class<?> method53();
71 public Class<?> method54();
72 public Class<?> method55();
73 public Class<?> method56();
74 public Class<?> method57();
75 public Class<?> method58();
76 public Class<?> method59();
77 public Class<?> method60();
78 public Class<?> method61();
79 public Class<?> method62();
80 public Class<?> method63();
81 public Class<?> method64();
82 public Class<?> method65();
83 public Class<?> method66();
84 public Class<?> method67();
85 public Class<?> method68();
86 public Class<?> method69();
87 public Class<?> method70();
88 public Class<?> method71();
89 public Class<?> method72();
90 public Class<?> method73();
91 public Class<?> method74();
92 public Class<?> method75();
93 public Class<?> method76();
94 public Class<?> method77();
95 public Class<?> method78();
96 public Class<?> method79();
97}
98
99public class Main implements Itf {
100 public static Itf main;
101 public static void main(String[] args) {
102 main = new Main();
103 callMains();
104 main = new SubMain();
105 callSubMains();
106 }
107
108 public static void callMains() {
109 // We loop to artificially create branches. The compiler will
110 // not compile this method otherwise.
111 for (int i = 0; i < 2; ++i) {
112 expectEquals(main.method1(), Main.class);
113 expectEquals(main.method2(), Main.class);
114 expectEquals(main.method3(), Main.class);
115 expectEquals(main.method4(), Main.class);
116 expectEquals(main.method5(), Main.class);
117 expectEquals(main.method6(), Main.class);
118 expectEquals(main.method7(), Main.class);
119 expectEquals(main.method8(), Main.class);
120 expectEquals(main.method9(), Main.class);
121 expectEquals(main.method10(), Main.class);
122 expectEquals(main.method11(), Main.class);
123 expectEquals(main.method12(), Main.class);
124 expectEquals(main.method13(), Main.class);
125 expectEquals(main.method14(), Main.class);
126 expectEquals(main.method15(), Main.class);
127 expectEquals(main.method16(), Main.class);
128 expectEquals(main.method17(), Main.class);
129 expectEquals(main.method18(), Main.class);
130 expectEquals(main.method19(), Main.class);
131 expectEquals(main.method20(), Main.class);
132 expectEquals(main.method21(), Main.class);
133 expectEquals(main.method22(), Main.class);
134 expectEquals(main.method23(), Main.class);
135 expectEquals(main.method24(), Main.class);
136 expectEquals(main.method25(), Main.class);
137 expectEquals(main.method26(), Main.class);
138 expectEquals(main.method27(), Main.class);
139 expectEquals(main.method28(), Main.class);
140 expectEquals(main.method29(), Main.class);
141 expectEquals(main.method30(), Main.class);
142 expectEquals(main.method31(), Main.class);
143 expectEquals(main.method32(), Main.class);
144 expectEquals(main.method33(), Main.class);
145 expectEquals(main.method34(), Main.class);
146 expectEquals(main.method35(), Main.class);
147 expectEquals(main.method36(), Main.class);
148 expectEquals(main.method37(), Main.class);
149 expectEquals(main.method38(), Main.class);
150 expectEquals(main.method39(), Main.class);
151 expectEquals(main.method40(), Main.class);
152 expectEquals(main.method41(), Main.class);
153 expectEquals(main.method42(), Main.class);
154 expectEquals(main.method43(), Main.class);
155 expectEquals(main.method44(), Main.class);
156 expectEquals(main.method45(), Main.class);
157 expectEquals(main.method46(), Main.class);
158 expectEquals(main.method47(), Main.class);
159 expectEquals(main.method48(), Main.class);
160 expectEquals(main.method49(), Main.class);
161 expectEquals(main.method50(), Main.class);
162 expectEquals(main.method51(), Main.class);
163 expectEquals(main.method52(), Main.class);
164 expectEquals(main.method53(), Main.class);
165 expectEquals(main.method54(), Main.class);
166 expectEquals(main.method55(), Main.class);
167 expectEquals(main.method56(), Main.class);
168 expectEquals(main.method57(), Main.class);
169 expectEquals(main.method58(), Main.class);
170 expectEquals(main.method59(), Main.class);
171 expectEquals(main.method60(), Main.class);
172 expectEquals(main.method61(), Main.class);
173 expectEquals(main.method62(), Main.class);
174 expectEquals(main.method63(), Main.class);
175 expectEquals(main.method64(), Main.class);
176 expectEquals(main.method65(), Main.class);
177 expectEquals(main.method66(), Main.class);
178 expectEquals(main.method67(), Main.class);
179 expectEquals(main.method68(), Main.class);
180 expectEquals(main.method69(), Main.class);
181 expectEquals(main.method70(), Main.class);
182 expectEquals(main.method71(), Main.class);
183 expectEquals(main.method72(), Main.class);
184 expectEquals(main.method73(), Main.class);
185 expectEquals(main.method74(), Main.class);
186 expectEquals(main.method75(), Main.class);
187 expectEquals(main.method76(), Main.class);
188 expectEquals(main.method77(), Main.class);
189 expectEquals(main.method78(), Main.class);
190 expectEquals(main.method79(), Main.class);
191 }
192 }
193
194 public static void callSubMains() {
195 // We loop to artificially create branches. The compiler will
196 // not compile this method otherwise.
197 for (int i = 0; i < 2; ++i) {
198 expectEquals(main.method1(), SubMain.class);
199 expectEquals(main.method2(), SubMain.class);
200 expectEquals(main.method3(), SubMain.class);
201 expectEquals(main.method4(), SubMain.class);
202 expectEquals(main.method5(), SubMain.class);
203 expectEquals(main.method6(), SubMain.class);
204 expectEquals(main.method7(), SubMain.class);
205 expectEquals(main.method8(), SubMain.class);
206 expectEquals(main.method9(), SubMain.class);
207 expectEquals(main.method10(), SubMain.class);
208 expectEquals(main.method11(), SubMain.class);
209 expectEquals(main.method12(), SubMain.class);
210 expectEquals(main.method13(), SubMain.class);
211 expectEquals(main.method14(), SubMain.class);
212 expectEquals(main.method15(), SubMain.class);
213 expectEquals(main.method16(), SubMain.class);
214 expectEquals(main.method17(), SubMain.class);
215 expectEquals(main.method18(), SubMain.class);
216 expectEquals(main.method19(), SubMain.class);
217 expectEquals(main.method20(), SubMain.class);
218 expectEquals(main.method21(), SubMain.class);
219 expectEquals(main.method22(), SubMain.class);
220 expectEquals(main.method23(), SubMain.class);
221 expectEquals(main.method24(), SubMain.class);
222 expectEquals(main.method25(), SubMain.class);
223 expectEquals(main.method26(), SubMain.class);
224 expectEquals(main.method27(), SubMain.class);
225 expectEquals(main.method28(), SubMain.class);
226 expectEquals(main.method29(), SubMain.class);
227 expectEquals(main.method30(), SubMain.class);
228 expectEquals(main.method31(), SubMain.class);
229 expectEquals(main.method32(), SubMain.class);
230 expectEquals(main.method33(), SubMain.class);
231 expectEquals(main.method34(), SubMain.class);
232 expectEquals(main.method35(), SubMain.class);
233 expectEquals(main.method36(), SubMain.class);
234 expectEquals(main.method37(), SubMain.class);
235 expectEquals(main.method38(), SubMain.class);
236 expectEquals(main.method39(), SubMain.class);
237 expectEquals(main.method40(), SubMain.class);
238 expectEquals(main.method41(), SubMain.class);
239 expectEquals(main.method42(), SubMain.class);
240 expectEquals(main.method43(), SubMain.class);
241 expectEquals(main.method44(), SubMain.class);
242 expectEquals(main.method45(), SubMain.class);
243 expectEquals(main.method46(), SubMain.class);
244 expectEquals(main.method47(), SubMain.class);
245 expectEquals(main.method48(), SubMain.class);
246 expectEquals(main.method49(), SubMain.class);
247 expectEquals(main.method50(), SubMain.class);
248 expectEquals(main.method51(), SubMain.class);
249 expectEquals(main.method52(), SubMain.class);
250 expectEquals(main.method53(), SubMain.class);
251 expectEquals(main.method54(), SubMain.class);
252 expectEquals(main.method55(), SubMain.class);
253 expectEquals(main.method56(), SubMain.class);
254 expectEquals(main.method57(), SubMain.class);
255 expectEquals(main.method58(), SubMain.class);
256 expectEquals(main.method59(), SubMain.class);
257 expectEquals(main.method60(), SubMain.class);
258 expectEquals(main.method61(), SubMain.class);
259 expectEquals(main.method62(), SubMain.class);
260 expectEquals(main.method63(), SubMain.class);
261 expectEquals(main.method64(), SubMain.class);
262 expectEquals(main.method65(), SubMain.class);
263 expectEquals(main.method66(), SubMain.class);
264 expectEquals(main.method67(), SubMain.class);
265 expectEquals(main.method68(), SubMain.class);
266 expectEquals(main.method69(), SubMain.class);
267 expectEquals(main.method70(), SubMain.class);
268 expectEquals(main.method71(), SubMain.class);
269 expectEquals(main.method72(), SubMain.class);
270 expectEquals(main.method73(), SubMain.class);
271 expectEquals(main.method74(), SubMain.class);
272 expectEquals(main.method75(), SubMain.class);
273 expectEquals(main.method76(), SubMain.class);
274 expectEquals(main.method77(), SubMain.class);
275 expectEquals(main.method78(), SubMain.class);
276 expectEquals(main.method79(), SubMain.class);
277 }
278 }
279
280 public static void expectEquals(Object actual, Object expected) {
281 if (!actual.equals(expected)) {
282 throw new Error("Expected " + expected + ", got " + actual);
283 }
284 }
285
286 public Class<?> method1() { return Main.class; }
287 public Class<?> method2() { return Main.class; }
288 public Class<?> method3() { return Main.class; }
289 public Class<?> method4() { return Main.class; }
290 public Class<?> method5() { return Main.class; }
291 public Class<?> method6() { return Main.class; }
292 public Class<?> method7() { return Main.class; }
293 public Class<?> method8() { return Main.class; }
294 public Class<?> method9() { return Main.class; }
295 public Class<?> method10() { return Main.class; }
296 public Class<?> method11() { return Main.class; }
297 public Class<?> method12() { return Main.class; }
298 public Class<?> method13() { return Main.class; }
299 public Class<?> method14() { return Main.class; }
300 public Class<?> method15() { return Main.class; }
301 public Class<?> method16() { return Main.class; }
302 public Class<?> method17() { return Main.class; }
303 public Class<?> method18() { return Main.class; }
304 public Class<?> method19() { return Main.class; }
305 public Class<?> method20() { return Main.class; }
306 public Class<?> method21() { return Main.class; }
307 public Class<?> method22() { return Main.class; }
308 public Class<?> method23() { return Main.class; }
309 public Class<?> method24() { return Main.class; }
310 public Class<?> method25() { return Main.class; }
311 public Class<?> method26() { return Main.class; }
312 public Class<?> method27() { return Main.class; }
313 public Class<?> method28() { return Main.class; }
314 public Class<?> method29() { return Main.class; }
315 public Class<?> method30() { return Main.class; }
316 public Class<?> method31() { return Main.class; }
317 public Class<?> method32() { return Main.class; }
318 public Class<?> method33() { return Main.class; }
319 public Class<?> method34() { return Main.class; }
320 public Class<?> method35() { return Main.class; }
321 public Class<?> method36() { return Main.class; }
322 public Class<?> method37() { return Main.class; }
323 public Class<?> method38() { return Main.class; }
324 public Class<?> method39() { return Main.class; }
325 public Class<?> method40() { return Main.class; }
326 public Class<?> method41() { return Main.class; }
327 public Class<?> method42() { return Main.class; }
328 public Class<?> method43() { return Main.class; }
329 public Class<?> method44() { return Main.class; }
330 public Class<?> method45() { return Main.class; }
331 public Class<?> method46() { return Main.class; }
332 public Class<?> method47() { return Main.class; }
333 public Class<?> method48() { return Main.class; }
334 public Class<?> method49() { return Main.class; }
335 public Class<?> method50() { return Main.class; }
336 public Class<?> method51() { return Main.class; }
337 public Class<?> method52() { return Main.class; }
338 public Class<?> method53() { return Main.class; }
339 public Class<?> method54() { return Main.class; }
340 public Class<?> method55() { return Main.class; }
341 public Class<?> method56() { return Main.class; }
342 public Class<?> method57() { return Main.class; }
343 public Class<?> method58() { return Main.class; }
344 public Class<?> method59() { return Main.class; }
345 public Class<?> method60() { return Main.class; }
346 public Class<?> method61() { return Main.class; }
347 public Class<?> method62() { return Main.class; }
348 public Class<?> method63() { return Main.class; }
349 public Class<?> method64() { return Main.class; }
350 public Class<?> method65() { return Main.class; }
351 public Class<?> method66() { return Main.class; }
352 public Class<?> method67() { return Main.class; }
353 public Class<?> method68() { return Main.class; }
354 public Class<?> method69() { return Main.class; }
355 public Class<?> method70() { return Main.class; }
356 public Class<?> method71() { return Main.class; }
357 public Class<?> method72() { return Main.class; }
358 public Class<?> method73() { return Main.class; }
359 public Class<?> method74() { return Main.class; }
360 public Class<?> method75() { return Main.class; }
361 public Class<?> method76() { return Main.class; }
362 public Class<?> method77() { return Main.class; }
363 public Class<?> method78() { return Main.class; }
364 public Class<?> method79() { return Main.class; }
365}
366
367class SubMain extends Main {
368 public Class<?> method1() { return SubMain.class; }
369 public Class<?> method2() { return SubMain.class; }
370 public Class<?> method3() { return SubMain.class; }
371 public Class<?> method4() { return SubMain.class; }
372 public Class<?> method5() { return SubMain.class; }
373 public Class<?> method6() { return SubMain.class; }
374 public Class<?> method7() { return SubMain.class; }
375 public Class<?> method8() { return SubMain.class; }
376 public Class<?> method9() { return SubMain.class; }
377 public Class<?> method10() { return SubMain.class; }
378 public Class<?> method11() { return SubMain.class; }
379 public Class<?> method12() { return SubMain.class; }
380 public Class<?> method13() { return SubMain.class; }
381 public Class<?> method14() { return SubMain.class; }
382 public Class<?> method15() { return SubMain.class; }
383 public Class<?> method16() { return SubMain.class; }
384 public Class<?> method17() { return SubMain.class; }
385 public Class<?> method18() { return SubMain.class; }
386 public Class<?> method19() { return SubMain.class; }
387 public Class<?> method20() { return SubMain.class; }
388 public Class<?> method21() { return SubMain.class; }
389 public Class<?> method22() { return SubMain.class; }
390 public Class<?> method23() { return SubMain.class; }
391 public Class<?> method24() { return SubMain.class; }
392 public Class<?> method25() { return SubMain.class; }
393 public Class<?> method26() { return SubMain.class; }
394 public Class<?> method27() { return SubMain.class; }
395 public Class<?> method28() { return SubMain.class; }
396 public Class<?> method29() { return SubMain.class; }
397 public Class<?> method30() { return SubMain.class; }
398 public Class<?> method31() { return SubMain.class; }
399 public Class<?> method32() { return SubMain.class; }
400 public Class<?> method33() { return SubMain.class; }
401 public Class<?> method34() { return SubMain.class; }
402 public Class<?> method35() { return SubMain.class; }
403 public Class<?> method36() { return SubMain.class; }
404 public Class<?> method37() { return SubMain.class; }
405 public Class<?> method38() { return SubMain.class; }
406 public Class<?> method39() { return SubMain.class; }
407 public Class<?> method40() { return SubMain.class; }
408 public Class<?> method41() { return SubMain.class; }
409 public Class<?> method42() { return SubMain.class; }
410 public Class<?> method43() { return SubMain.class; }
411 public Class<?> method44() { return SubMain.class; }
412 public Class<?> method45() { return SubMain.class; }
413 public Class<?> method46() { return SubMain.class; }
414 public Class<?> method47() { return SubMain.class; }
415 public Class<?> method48() { return SubMain.class; }
416 public Class<?> method49() { return SubMain.class; }
417 public Class<?> method50() { return SubMain.class; }
418 public Class<?> method51() { return SubMain.class; }
419 public Class<?> method52() { return SubMain.class; }
420 public Class<?> method53() { return SubMain.class; }
421 public Class<?> method54() { return SubMain.class; }
422 public Class<?> method55() { return SubMain.class; }
423 public Class<?> method56() { return SubMain.class; }
424 public Class<?> method57() { return SubMain.class; }
425 public Class<?> method58() { return SubMain.class; }
426 public Class<?> method59() { return SubMain.class; }
427 public Class<?> method60() { return SubMain.class; }
428 public Class<?> method61() { return SubMain.class; }
429 public Class<?> method62() { return SubMain.class; }
430 public Class<?> method63() { return SubMain.class; }
431 public Class<?> method64() { return SubMain.class; }
432 public Class<?> method65() { return SubMain.class; }
433 public Class<?> method66() { return SubMain.class; }
434 public Class<?> method67() { return SubMain.class; }
435 public Class<?> method68() { return SubMain.class; }
436 public Class<?> method69() { return SubMain.class; }
437 public Class<?> method70() { return SubMain.class; }
438 public Class<?> method71() { return SubMain.class; }
439 public Class<?> method72() { return SubMain.class; }
440 public Class<?> method73() { return SubMain.class; }
441 public Class<?> method74() { return SubMain.class; }
442 public Class<?> method75() { return SubMain.class; }
443 public Class<?> method76() { return SubMain.class; }
444 public Class<?> method77() { return SubMain.class; }
445 public Class<?> method78() { return SubMain.class; }
446 public Class<?> method79() { return SubMain.class; }
447}