/*
|
* Copyright (C) 2016 The Android Open Source Project
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
interface Itf {
|
public Class<?> method1();
|
public Class<?> method2();
|
public Class<?> method3();
|
public Class<?> method4();
|
public Class<?> method5();
|
public Class<?> method6();
|
public Class<?> method7();
|
public Class<?> method8();
|
public Class<?> method9();
|
public Class<?> method10();
|
public Class<?> method11();
|
public Class<?> method12();
|
public Class<?> method13();
|
public Class<?> method14();
|
public Class<?> method15();
|
public Class<?> method16();
|
public Class<?> method17();
|
public Class<?> method18();
|
public Class<?> method19();
|
public Class<?> method20();
|
public Class<?> method21();
|
public Class<?> method22();
|
public Class<?> method23();
|
public Class<?> method24();
|
public Class<?> method25();
|
public Class<?> method26();
|
public Class<?> method27();
|
public Class<?> method28();
|
public Class<?> method29();
|
public Class<?> method30();
|
public Class<?> method31();
|
public Class<?> method32();
|
public Class<?> method33();
|
public Class<?> method34();
|
public Class<?> method35();
|
public Class<?> method36();
|
public Class<?> method37();
|
public Class<?> method38();
|
public Class<?> method39();
|
public Class<?> method40();
|
public Class<?> method41();
|
public Class<?> method42();
|
public Class<?> method43();
|
public Class<?> method44();
|
public Class<?> method45();
|
public Class<?> method46();
|
public Class<?> method47();
|
public Class<?> method48();
|
public Class<?> method49();
|
public Class<?> method50();
|
public Class<?> method51();
|
public Class<?> method52();
|
public Class<?> method53();
|
public Class<?> method54();
|
public Class<?> method55();
|
public Class<?> method56();
|
public Class<?> method57();
|
public Class<?> method58();
|
public Class<?> method59();
|
public Class<?> method60();
|
public Class<?> method61();
|
public Class<?> method62();
|
public Class<?> method63();
|
public Class<?> method64();
|
public Class<?> method65();
|
public Class<?> method66();
|
public Class<?> method67();
|
public Class<?> method68();
|
public Class<?> method69();
|
public Class<?> method70();
|
public Class<?> method71();
|
public Class<?> method72();
|
public Class<?> method73();
|
public Class<?> method74();
|
public Class<?> method75();
|
public Class<?> method76();
|
public Class<?> method77();
|
public Class<?> method78();
|
public Class<?> method79();
|
}
|
|
public class Main implements Itf {
|
public static Itf main;
|
public static void main(String[] args) {
|
main = new Main();
|
callMains();
|
main = new SubMain();
|
callSubMains();
|
}
|
|
public static void callMains() {
|
// We loop to artificially create branches. The compiler will
|
// not compile this method otherwise.
|
for (int i = 0; i < 2; ++i) {
|
expectEquals(main.method1(), Main.class);
|
expectEquals(main.method2(), Main.class);
|
expectEquals(main.method3(), Main.class);
|
expectEquals(main.method4(), Main.class);
|
expectEquals(main.method5(), Main.class);
|
expectEquals(main.method6(), Main.class);
|
expectEquals(main.method7(), Main.class);
|
expectEquals(main.method8(), Main.class);
|
expectEquals(main.method9(), Main.class);
|
expectEquals(main.method10(), Main.class);
|
expectEquals(main.method11(), Main.class);
|
expectEquals(main.method12(), Main.class);
|
expectEquals(main.method13(), Main.class);
|
expectEquals(main.method14(), Main.class);
|
expectEquals(main.method15(), Main.class);
|
expectEquals(main.method16(), Main.class);
|
expectEquals(main.method17(), Main.class);
|
expectEquals(main.method18(), Main.class);
|
expectEquals(main.method19(), Main.class);
|
expectEquals(main.method20(), Main.class);
|
expectEquals(main.method21(), Main.class);
|
expectEquals(main.method22(), Main.class);
|
expectEquals(main.method23(), Main.class);
|
expectEquals(main.method24(), Main.class);
|
expectEquals(main.method25(), Main.class);
|
expectEquals(main.method26(), Main.class);
|
expectEquals(main.method27(), Main.class);
|
expectEquals(main.method28(), Main.class);
|
expectEquals(main.method29(), Main.class);
|
expectEquals(main.method30(), Main.class);
|
expectEquals(main.method31(), Main.class);
|
expectEquals(main.method32(), Main.class);
|
expectEquals(main.method33(), Main.class);
|
expectEquals(main.method34(), Main.class);
|
expectEquals(main.method35(), Main.class);
|
expectEquals(main.method36(), Main.class);
|
expectEquals(main.method37(), Main.class);
|
expectEquals(main.method38(), Main.class);
|
expectEquals(main.method39(), Main.class);
|
expectEquals(main.method40(), Main.class);
|
expectEquals(main.method41(), Main.class);
|
expectEquals(main.method42(), Main.class);
|
expectEquals(main.method43(), Main.class);
|
expectEquals(main.method44(), Main.class);
|
expectEquals(main.method45(), Main.class);
|
expectEquals(main.method46(), Main.class);
|
expectEquals(main.method47(), Main.class);
|
expectEquals(main.method48(), Main.class);
|
expectEquals(main.method49(), Main.class);
|
expectEquals(main.method50(), Main.class);
|
expectEquals(main.method51(), Main.class);
|
expectEquals(main.method52(), Main.class);
|
expectEquals(main.method53(), Main.class);
|
expectEquals(main.method54(), Main.class);
|
expectEquals(main.method55(), Main.class);
|
expectEquals(main.method56(), Main.class);
|
expectEquals(main.method57(), Main.class);
|
expectEquals(main.method58(), Main.class);
|
expectEquals(main.method59(), Main.class);
|
expectEquals(main.method60(), Main.class);
|
expectEquals(main.method61(), Main.class);
|
expectEquals(main.method62(), Main.class);
|
expectEquals(main.method63(), Main.class);
|
expectEquals(main.method64(), Main.class);
|
expectEquals(main.method65(), Main.class);
|
expectEquals(main.method66(), Main.class);
|
expectEquals(main.method67(), Main.class);
|
expectEquals(main.method68(), Main.class);
|
expectEquals(main.method69(), Main.class);
|
expectEquals(main.method70(), Main.class);
|
expectEquals(main.method71(), Main.class);
|
expectEquals(main.method72(), Main.class);
|
expectEquals(main.method73(), Main.class);
|
expectEquals(main.method74(), Main.class);
|
expectEquals(main.method75(), Main.class);
|
expectEquals(main.method76(), Main.class);
|
expectEquals(main.method77(), Main.class);
|
expectEquals(main.method78(), Main.class);
|
expectEquals(main.method79(), Main.class);
|
}
|
}
|
|
public static void callSubMains() {
|
// We loop to artificially create branches. The compiler will
|
// not compile this method otherwise.
|
for (int i = 0; i < 2; ++i) {
|
expectEquals(main.method1(), SubMain.class);
|
expectEquals(main.method2(), SubMain.class);
|
expectEquals(main.method3(), SubMain.class);
|
expectEquals(main.method4(), SubMain.class);
|
expectEquals(main.method5(), SubMain.class);
|
expectEquals(main.method6(), SubMain.class);
|
expectEquals(main.method7(), SubMain.class);
|
expectEquals(main.method8(), SubMain.class);
|
expectEquals(main.method9(), SubMain.class);
|
expectEquals(main.method10(), SubMain.class);
|
expectEquals(main.method11(), SubMain.class);
|
expectEquals(main.method12(), SubMain.class);
|
expectEquals(main.method13(), SubMain.class);
|
expectEquals(main.method14(), SubMain.class);
|
expectEquals(main.method15(), SubMain.class);
|
expectEquals(main.method16(), SubMain.class);
|
expectEquals(main.method17(), SubMain.class);
|
expectEquals(main.method18(), SubMain.class);
|
expectEquals(main.method19(), SubMain.class);
|
expectEquals(main.method20(), SubMain.class);
|
expectEquals(main.method21(), SubMain.class);
|
expectEquals(main.method22(), SubMain.class);
|
expectEquals(main.method23(), SubMain.class);
|
expectEquals(main.method24(), SubMain.class);
|
expectEquals(main.method25(), SubMain.class);
|
expectEquals(main.method26(), SubMain.class);
|
expectEquals(main.method27(), SubMain.class);
|
expectEquals(main.method28(), SubMain.class);
|
expectEquals(main.method29(), SubMain.class);
|
expectEquals(main.method30(), SubMain.class);
|
expectEquals(main.method31(), SubMain.class);
|
expectEquals(main.method32(), SubMain.class);
|
expectEquals(main.method33(), SubMain.class);
|
expectEquals(main.method34(), SubMain.class);
|
expectEquals(main.method35(), SubMain.class);
|
expectEquals(main.method36(), SubMain.class);
|
expectEquals(main.method37(), SubMain.class);
|
expectEquals(main.method38(), SubMain.class);
|
expectEquals(main.method39(), SubMain.class);
|
expectEquals(main.method40(), SubMain.class);
|
expectEquals(main.method41(), SubMain.class);
|
expectEquals(main.method42(), SubMain.class);
|
expectEquals(main.method43(), SubMain.class);
|
expectEquals(main.method44(), SubMain.class);
|
expectEquals(main.method45(), SubMain.class);
|
expectEquals(main.method46(), SubMain.class);
|
expectEquals(main.method47(), SubMain.class);
|
expectEquals(main.method48(), SubMain.class);
|
expectEquals(main.method49(), SubMain.class);
|
expectEquals(main.method50(), SubMain.class);
|
expectEquals(main.method51(), SubMain.class);
|
expectEquals(main.method52(), SubMain.class);
|
expectEquals(main.method53(), SubMain.class);
|
expectEquals(main.method54(), SubMain.class);
|
expectEquals(main.method55(), SubMain.class);
|
expectEquals(main.method56(), SubMain.class);
|
expectEquals(main.method57(), SubMain.class);
|
expectEquals(main.method58(), SubMain.class);
|
expectEquals(main.method59(), SubMain.class);
|
expectEquals(main.method60(), SubMain.class);
|
expectEquals(main.method61(), SubMain.class);
|
expectEquals(main.method62(), SubMain.class);
|
expectEquals(main.method63(), SubMain.class);
|
expectEquals(main.method64(), SubMain.class);
|
expectEquals(main.method65(), SubMain.class);
|
expectEquals(main.method66(), SubMain.class);
|
expectEquals(main.method67(), SubMain.class);
|
expectEquals(main.method68(), SubMain.class);
|
expectEquals(main.method69(), SubMain.class);
|
expectEquals(main.method70(), SubMain.class);
|
expectEquals(main.method71(), SubMain.class);
|
expectEquals(main.method72(), SubMain.class);
|
expectEquals(main.method73(), SubMain.class);
|
expectEquals(main.method74(), SubMain.class);
|
expectEquals(main.method75(), SubMain.class);
|
expectEquals(main.method76(), SubMain.class);
|
expectEquals(main.method77(), SubMain.class);
|
expectEquals(main.method78(), SubMain.class);
|
expectEquals(main.method79(), SubMain.class);
|
}
|
}
|
|
public static void expectEquals(Object actual, Object expected) {
|
if (!actual.equals(expected)) {
|
throw new Error("Expected " + expected + ", got " + actual);
|
}
|
}
|
|
public Class<?> method1() { return Main.class; }
|
public Class<?> method2() { return Main.class; }
|
public Class<?> method3() { return Main.class; }
|
public Class<?> method4() { return Main.class; }
|
public Class<?> method5() { return Main.class; }
|
public Class<?> method6() { return Main.class; }
|
public Class<?> method7() { return Main.class; }
|
public Class<?> method8() { return Main.class; }
|
public Class<?> method9() { return Main.class; }
|
public Class<?> method10() { return Main.class; }
|
public Class<?> method11() { return Main.class; }
|
public Class<?> method12() { return Main.class; }
|
public Class<?> method13() { return Main.class; }
|
public Class<?> method14() { return Main.class; }
|
public Class<?> method15() { return Main.class; }
|
public Class<?> method16() { return Main.class; }
|
public Class<?> method17() { return Main.class; }
|
public Class<?> method18() { return Main.class; }
|
public Class<?> method19() { return Main.class; }
|
public Class<?> method20() { return Main.class; }
|
public Class<?> method21() { return Main.class; }
|
public Class<?> method22() { return Main.class; }
|
public Class<?> method23() { return Main.class; }
|
public Class<?> method24() { return Main.class; }
|
public Class<?> method25() { return Main.class; }
|
public Class<?> method26() { return Main.class; }
|
public Class<?> method27() { return Main.class; }
|
public Class<?> method28() { return Main.class; }
|
public Class<?> method29() { return Main.class; }
|
public Class<?> method30() { return Main.class; }
|
public Class<?> method31() { return Main.class; }
|
public Class<?> method32() { return Main.class; }
|
public Class<?> method33() { return Main.class; }
|
public Class<?> method34() { return Main.class; }
|
public Class<?> method35() { return Main.class; }
|
public Class<?> method36() { return Main.class; }
|
public Class<?> method37() { return Main.class; }
|
public Class<?> method38() { return Main.class; }
|
public Class<?> method39() { return Main.class; }
|
public Class<?> method40() { return Main.class; }
|
public Class<?> method41() { return Main.class; }
|
public Class<?> method42() { return Main.class; }
|
public Class<?> method43() { return Main.class; }
|
public Class<?> method44() { return Main.class; }
|
public Class<?> method45() { return Main.class; }
|
public Class<?> method46() { return Main.class; }
|
public Class<?> method47() { return Main.class; }
|
public Class<?> method48() { return Main.class; }
|
public Class<?> method49() { return Main.class; }
|
public Class<?> method50() { return Main.class; }
|
public Class<?> method51() { return Main.class; }
|
public Class<?> method52() { return Main.class; }
|
public Class<?> method53() { return Main.class; }
|
public Class<?> method54() { return Main.class; }
|
public Class<?> method55() { return Main.class; }
|
public Class<?> method56() { return Main.class; }
|
public Class<?> method57() { return Main.class; }
|
public Class<?> method58() { return Main.class; }
|
public Class<?> method59() { return Main.class; }
|
public Class<?> method60() { return Main.class; }
|
public Class<?> method61() { return Main.class; }
|
public Class<?> method62() { return Main.class; }
|
public Class<?> method63() { return Main.class; }
|
public Class<?> method64() { return Main.class; }
|
public Class<?> method65() { return Main.class; }
|
public Class<?> method66() { return Main.class; }
|
public Class<?> method67() { return Main.class; }
|
public Class<?> method68() { return Main.class; }
|
public Class<?> method69() { return Main.class; }
|
public Class<?> method70() { return Main.class; }
|
public Class<?> method71() { return Main.class; }
|
public Class<?> method72() { return Main.class; }
|
public Class<?> method73() { return Main.class; }
|
public Class<?> method74() { return Main.class; }
|
public Class<?> method75() { return Main.class; }
|
public Class<?> method76() { return Main.class; }
|
public Class<?> method77() { return Main.class; }
|
public Class<?> method78() { return Main.class; }
|
public Class<?> method79() { return Main.class; }
|
}
|
|
class SubMain extends Main {
|
public Class<?> method1() { return SubMain.class; }
|
public Class<?> method2() { return SubMain.class; }
|
public Class<?> method3() { return SubMain.class; }
|
public Class<?> method4() { return SubMain.class; }
|
public Class<?> method5() { return SubMain.class; }
|
public Class<?> method6() { return SubMain.class; }
|
public Class<?> method7() { return SubMain.class; }
|
public Class<?> method8() { return SubMain.class; }
|
public Class<?> method9() { return SubMain.class; }
|
public Class<?> method10() { return SubMain.class; }
|
public Class<?> method11() { return SubMain.class; }
|
public Class<?> method12() { return SubMain.class; }
|
public Class<?> method13() { return SubMain.class; }
|
public Class<?> method14() { return SubMain.class; }
|
public Class<?> method15() { return SubMain.class; }
|
public Class<?> method16() { return SubMain.class; }
|
public Class<?> method17() { return SubMain.class; }
|
public Class<?> method18() { return SubMain.class; }
|
public Class<?> method19() { return SubMain.class; }
|
public Class<?> method20() { return SubMain.class; }
|
public Class<?> method21() { return SubMain.class; }
|
public Class<?> method22() { return SubMain.class; }
|
public Class<?> method23() { return SubMain.class; }
|
public Class<?> method24() { return SubMain.class; }
|
public Class<?> method25() { return SubMain.class; }
|
public Class<?> method26() { return SubMain.class; }
|
public Class<?> method27() { return SubMain.class; }
|
public Class<?> method28() { return SubMain.class; }
|
public Class<?> method29() { return SubMain.class; }
|
public Class<?> method30() { return SubMain.class; }
|
public Class<?> method31() { return SubMain.class; }
|
public Class<?> method32() { return SubMain.class; }
|
public Class<?> method33() { return SubMain.class; }
|
public Class<?> method34() { return SubMain.class; }
|
public Class<?> method35() { return SubMain.class; }
|
public Class<?> method36() { return SubMain.class; }
|
public Class<?> method37() { return SubMain.class; }
|
public Class<?> method38() { return SubMain.class; }
|
public Class<?> method39() { return SubMain.class; }
|
public Class<?> method40() { return SubMain.class; }
|
public Class<?> method41() { return SubMain.class; }
|
public Class<?> method42() { return SubMain.class; }
|
public Class<?> method43() { return SubMain.class; }
|
public Class<?> method44() { return SubMain.class; }
|
public Class<?> method45() { return SubMain.class; }
|
public Class<?> method46() { return SubMain.class; }
|
public Class<?> method47() { return SubMain.class; }
|
public Class<?> method48() { return SubMain.class; }
|
public Class<?> method49() { return SubMain.class; }
|
public Class<?> method50() { return SubMain.class; }
|
public Class<?> method51() { return SubMain.class; }
|
public Class<?> method52() { return SubMain.class; }
|
public Class<?> method53() { return SubMain.class; }
|
public Class<?> method54() { return SubMain.class; }
|
public Class<?> method55() { return SubMain.class; }
|
public Class<?> method56() { return SubMain.class; }
|
public Class<?> method57() { return SubMain.class; }
|
public Class<?> method58() { return SubMain.class; }
|
public Class<?> method59() { return SubMain.class; }
|
public Class<?> method60() { return SubMain.class; }
|
public Class<?> method61() { return SubMain.class; }
|
public Class<?> method62() { return SubMain.class; }
|
public Class<?> method63() { return SubMain.class; }
|
public Class<?> method64() { return SubMain.class; }
|
public Class<?> method65() { return SubMain.class; }
|
public Class<?> method66() { return SubMain.class; }
|
public Class<?> method67() { return SubMain.class; }
|
public Class<?> method68() { return SubMain.class; }
|
public Class<?> method69() { return SubMain.class; }
|
public Class<?> method70() { return SubMain.class; }
|
public Class<?> method71() { return SubMain.class; }
|
public Class<?> method72() { return SubMain.class; }
|
public Class<?> method73() { return SubMain.class; }
|
public Class<?> method74() { return SubMain.class; }
|
public Class<?> method75() { return SubMain.class; }
|
public Class<?> method76() { return SubMain.class; }
|
public Class<?> method77() { return SubMain.class; }
|
public Class<?> method78() { return SubMain.class; }
|
public Class<?> method79() { return SubMain.class; }
|
}
|