Home | History | Annotate | Download | only in src
      1 /*
      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 
     17 interface 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 
     99 public 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 
    367 class 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 }
    448