/******************************************************************************* * Copyright (c) 2006, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Stephan Herrmann - Contribution for * bug 388800 - [1.8] adjust tests to 1.8 JRE * Bug 412203 - [compiler] Internal compiler error: java.lang.IllegalArgumentException: info cannot be null * Bug 400874 - [1.8][compiler] Inference infrastructure should evolve to meet JLS8 18.x (Part G of JSR335 spec) *******************************************************************************/ package org.eclipse.jdt.core.tests.compiler.regression; import java.io.File; import java.util.Map; import junit.framework.Test; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.ToolFactory; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.core.util.ClassFileBytesDisassembler; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; @SuppressWarnings({ "unchecked", "rawtypes" }) public class StackMapAttributeTest extends AbstractRegressionTest { public StackMapAttributeTest(String name) { super(name); } public static Class testClass() { return StackMapAttributeTest.class; } // Use this static initializer to specify subset for tests // All specified tests which does not belong to the class are skipped... static { // TESTS_PREFIX = "testBug95521"; // TESTS_NAMES = new String[] { "testBug412076_" }; // TESTS_NUMBERS = new int[] { 53 }; // TESTS_RANGE = new int[] { 23 -1,}; } public static Test suite() { return buildMinimalComplianceTestSuite(testClass(), F_1_6); } public void test001() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " X() {}\n" + " X(double i) {\n" + " this(i > 0 ? null : new Object());\n" + " try {\n" + " foo(6, false);\n" + " } catch(Exception e) {\n" + " e.printStackTrace();\n" + " }\n" + " }\n" + " X(Object o) {}\n" + " int foo(int i, boolean b) {\n" + " try {\n" + " if (b) {\n" + " return i;\n" + " }\n" + " return i + 1;\n" + " } catch(Exception e) {\n" + " return 5;\n" + " }\n" + " }\n" + " public static void main(String[] args) {\n" + " new X().foo(2, false);\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #14 (D)V\n" + " // Stack: 5, Locals: 4\n" + " X(double i);\n" + " 0 aload_0 [this]\n" + " 1 dload_1 [i]\n" + " 2 dconst_0\n" + " 3 dcmpl\n" + " 4 ifle 11\n" + " 7 aconst_null\n" + " 8 goto 18\n" + " 11 new java.lang.Object [3]\n" + " 14 dup\n" + " 15 invokespecial java.lang.Object() [8]\n" + " 18 invokespecial X(java.lang.Object) [15]\n" + " 21 aload_0 [this]\n" + " 22 bipush 6\n" + " 24 iconst_0\n" + " 25 invokevirtual X.foo(int, boolean) : int [18]\n" + " 28 pop\n" + " 29 goto 37\n" + " 32 astore_3 [e]\n" + " 33 aload_3 [e]\n" + " 34 invokevirtual java.lang.Exception.printStackTrace() : void [22]\n" + " 37 return\n" + " Exception Table:\n" + " [pc: 21, pc: 29] -> 32 when : java.lang.Exception\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 21, line: 6]\n" + " [pc: 29, line: 7]\n" + " [pc: 33, line: 8]\n" + " [pc: 37, line: 10]\n" + " Local variable table:\n" + " [pc: 0, pc: 38] local: this index: 0 type: X\n" + " [pc: 0, pc: 38] local: i index: 1 type: double\n" + " [pc: 33, pc: 37] local: e index: 3 type: java.lang.Exception\n" + " Stack map table: number of frames 4\n" + " [pc: 11, same_locals_1_stack_item, stack: {uninitialized_this}]\n" + " [pc: 18, full, stack: {uninitialized_this, java.lang.Object}, locals: {uninitialized_this, double}]\n" + " [pc: 32, full, stack: {java.lang.Exception}, locals: {X, double}]\n" + " [pc: 37, same]\n" + " \n" + " // Method descriptor #17 (Ljava/lang/Object;)V\n" + " // Stack: 1, Locals: 2\n" + " X(java.lang.Object o);\n" + " 0 aload_0 [this]\n" + " 1 invokespecial java.lang.Object() [8]\n" + " 4 return\n" + " Line numbers:\n" + " [pc: 0, line: 11]\n" + " Local variable table:\n" + " [pc: 0, pc: 5] local: this index: 0 type: X\n" + " [pc: 0, pc: 5] local: o index: 1 type: java.lang.Object\n" + " \n" + " // Method descriptor #21 (IZ)I\n" + " // Stack: 2, Locals: 4\n" + " int foo(int i, boolean b);\n" + " 0 iload_2 [b]\n" + " 1 ifeq 6\n" + " 4 iload_1 [i]\n" + " 5 ireturn\n" + " 6 iload_1 [i]\n" + " 7 iconst_1\n" + " 8 iadd\n" + " 9 ireturn\n" + " 10 astore_3 [e]\n" + " 11 iconst_5\n" + " 12 ireturn\n" + " Exception Table:\n" + " [pc: 0, pc: 5] -> 10 when : java.lang.Exception\n" + " [pc: 6, pc: 9] -> 10 when : java.lang.Exception\n" + " Line numbers:\n" + " [pc: 0, line: 14]\n" + " [pc: 4, line: 15]\n" + " [pc: 6, line: 17]\n" + " [pc: 10, line: 18]\n" + " [pc: 11, line: 19]\n" + " Local variable table:\n" + " [pc: 0, pc: 13] local: this index: 0 type: X\n" + " [pc: 0, pc: 13] local: i index: 1 type: int\n" + " [pc: 0, pc: 13] local: b index: 2 type: boolean\n" + " [pc: 11, pc: 13] local: e index: 3 type: java.lang.Exception\n" + " Stack map table: number of frames 2\n" + " [pc: 6, same]\n" + " [pc: 10, same_locals_1_stack_item, stack: {java.lang.Exception}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test002() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void foo(double d, boolean b) {\n" + " double i;\n" + " try {\n" + " i = 0;\n" + " i++;\n" + " int j = (int) (i - 1);\n" + " if (b) {\n" + " double d1 = 0;\n" + " if (!b) {\n" + " d1 = 0;\n" + " }\n" + " double d2 = d + d1;\n" + " }\n" + " bar(j);\n" + " } catch(NullPointerException e) {\n" + " i = 2;\n" + " } finally {\n" + " i = 1;\n" + " }\n" + " long j = (long) (i + 1);\n" + " int k = (int) j;\n" + " k += j;\n" + " }\n" + " public static void bar(int i) {}\n" + " public static void main(String[] args) {\n" + " foo(0, true);\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 (DZ)V\n" + " // Stack: 4, Locals: 11\n" + " public static void foo(double d, boolean b);\n" + " 0 dconst_0\n" + " 1 dstore_3 [i]\n" + " 2 dload_3 [i]\n" + " 3 dconst_1\n" + " 4 dadd\n" + " 5 dstore_3 [i]\n" + " 6 dload_3 [i]\n" + " 7 dconst_1\n" + " 8 dsub\n" + " 9 d2i\n" + " 10 istore 5 [j]\n" + " 12 iload_2 [b]\n" + " 13 ifeq 32\n" + " 16 dconst_0\n" + " 17 dstore 6 [d1]\n" + " 19 iload_2 [b]\n" + " 20 ifne 26\n" + " 23 dconst_0\n" + " 24 dstore 6 [d1]\n" + " 26 dload_0 [d]\n" + " 27 dload 6 [d1]\n" + " 29 dadd\n" + " 30 dstore 8\n" + " 32 iload 5 [j]\n" + " 34 invokestatic X.bar(int) : void [16]\n" + " 37 goto 58\n" + " 40 astore 5 [e]\n" + " 42 ldc2_w <Double 2.0> [20]\n" + " 45 dstore_3 [i]\n" + " 46 dconst_1\n" + " 47 dstore_3 [i]\n" + " 48 goto 60\n" + " 51 astore 10\n" + " 53 dconst_1\n" + " 54 dstore_3 [i]\n" + " 55 aload 10\n" + " 57 athrow\n" + " 58 dconst_1\n" + " 59 dstore_3 [i]\n" + " 60 dload_3 [i]\n" + " 61 dconst_1\n" + " 62 dadd\n" + " 63 d2l\n" + " 64 lstore 5 [j]\n" + " 66 lload 5 [j]\n" + " 68 l2i\n" + " 69 istore 7 [k]\n" + " 71 iload 7 [k]\n" + " 73 i2l\n" + " 74 lload 5 [j]\n" + " 76 ladd\n" + " 77 l2i\n" + " 78 istore 7 [k]\n" + " 80 return\n" + " Exception Table:\n" + " [pc: 0, pc: 37] -> 40 when : java.lang.NullPointerException\n" + " [pc: 0, pc: 46] -> 51 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 5]\n" + " [pc: 2, line: 6]\n" + " [pc: 6, line: 7]\n" + " [pc: 12, line: 8]\n" + " [pc: 16, line: 9]\n" + " [pc: 19, line: 10]\n" + " [pc: 23, line: 11]\n" + " [pc: 26, line: 13]\n" + " [pc: 32, line: 15]\n" + " [pc: 37, line: 16]\n" + " [pc: 42, line: 17]\n" + " [pc: 46, line: 19]\n" + " [pc: 51, line: 18]\n" + " [pc: 53, line: 19]\n" + " [pc: 55, line: 20]\n" + " [pc: 58, line: 19]\n" + " [pc: 60, line: 21]\n" + " [pc: 66, line: 22]\n" + " [pc: 71, line: 23]\n" + " [pc: 80, line: 24]\n" + " Local variable table:\n" + " [pc: 0, pc: 81] local: d index: 0 type: double\n" + " [pc: 0, pc: 81] local: b index: 2 type: boolean\n" + " [pc: 2, pc: 40] local: i index: 3 type: double\n" + " [pc: 46, pc: 51] local: i index: 3 type: double\n" + " [pc: 55, pc: 81] local: i index: 3 type: double\n" + " [pc: 12, pc: 37] local: j index: 5 type: int\n" + " [pc: 19, pc: 32] local: d1 index: 6 type: double\n" + " [pc: 42, pc: 46] local: e index: 5 type: java.lang.NullPointerException\n" + " [pc: 66, pc: 81] local: j index: 5 type: long\n" + " [pc: 71, pc: 81] local: k index: 7 type: int\n" + " Stack map table: number of frames 6\n" + " [pc: 26, append: {double, int, double}]\n" + " [pc: 32, chop 1 local(s)]\n" + " [pc: 40, full, stack: {java.lang.NullPointerException}, locals: {double, int}]\n" + " [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 58, append: {double}]\n" + " [pc: 60, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test003() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void foo(boolean b) {\n" + " int i = 0;\n" + " try {\n" + " System.out.println(\"FINALLY\");\n" + " i++;\n" + " int j = i -1;\n" + " bar(j);\n" + " } catch(NullPointerException e) {\n" + " e.printStackTrace();\n" + " } finally {\n" + " System.out.println(\"FINALLY\");\n" + " }\n" + " }\n" + " public static void bar(int i) {}\n" + " \n" + " public static void main(String[] args) {\n" + " foo(true);\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "FINALLY\n" + "FINALLY\n" + "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 (Z)V\n" + " // Stack: 2, Locals: 4\n" + " public static void foo(boolean b);\n" + " 0 iconst_0\n" + " 1 istore_1 [i]\n" + " 2 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 5 ldc <String \"FINALLY\"> [22]\n" + " 7 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 10 iinc 1 1 [i]\n" + " 13 iload_1 [i]\n" + " 14 iconst_1\n" + " 15 isub\n" + " 16 istore_2 [j]\n" + " 17 iload_2 [j]\n" + " 18 invokestatic X.bar(int) : void [30]\n" + " 21 goto 51\n" + " 24 astore_2 [e]\n" + " 25 aload_2 [e]\n" + " 26 invokevirtual java.lang.NullPointerException.printStackTrace() : void [34]\n" + " 29 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 32 ldc <String \"FINALLY\"> [22]\n" + " 34 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 37 goto 59\n" + " 40 astore_3\n" + " 41 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 44 ldc <String \"FINALLY\"> [22]\n" + " 46 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 49 aload_3\n" + " 50 athrow\n" + " 51 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 54 ldc <String \"FINALLY\"> [22]\n" + " 56 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 59 return\n" + " Exception Table:\n" + " [pc: 2, pc: 21] -> 24 when : java.lang.NullPointerException\n" + " [pc: 2, pc: 29] -> 40 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 2, line: 5]\n" + " [pc: 10, line: 6]\n" + " [pc: 13, line: 7]\n" + " [pc: 17, line: 8]\n" + " [pc: 21, line: 9]\n" + " [pc: 25, line: 10]\n" + " [pc: 29, line: 12]\n" + " [pc: 40, line: 11]\n" + " [pc: 41, line: 12]\n" + " [pc: 49, line: 13]\n" + " [pc: 51, line: 12]\n" + " [pc: 59, line: 14]\n" + " Local variable table:\n" + " [pc: 0, pc: 60] local: b index: 0 type: boolean\n" + " [pc: 2, pc: 60] local: i index: 1 type: int\n" + " [pc: 17, pc: 21] local: j index: 2 type: int\n" + " [pc: 25, pc: 29] local: e index: 2 type: java.lang.NullPointerException\n" + " Stack map table: number of frames 4\n" + " [pc: 24, full, stack: {java.lang.NullPointerException}, locals: {int, int}]\n" + " [pc: 40, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 51, same]\n" + " [pc: 59, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test004() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void foo(boolean b) {\n" + " C c;\n" + " if (b) {\n" + " c = new C1();\n" + " } else {\n" + " c = new C2();\n" + " }\n" + " System.out.println();\n" + " }\n" + " public static void main(String[] args) {\n" + " foo(true);\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" + "class C {\n" + " void foo() {}\n" + "}\n" + "class C1 extends C {\n" + "}\n" + "class C2 extends C {\n" + "}", }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 (Z)V\n" + " // Stack: 2, Locals: 2\n" + " public static void foo(boolean b);\n" + " 0 iload_0 [b]\n" + " 1 ifeq 15\n" + " 4 new C1 [16]\n" + " 7 dup\n" + " 8 invokespecial C1() [18]\n" + " 11 astore_1 [c]\n" + " 12 goto 23\n" + " 15 new C2 [19]\n" + " 18 dup\n" + " 19 invokespecial C2() [21]\n" + " 22 astore_1 [c]\n" + " 23 getstatic java.lang.System.out : java.io.PrintStream [22]\n" + " 26 invokevirtual java.io.PrintStream.println() : void [28]\n" + " 29 return\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 4, line: 5]\n" + " [pc: 12, line: 6]\n" + " [pc: 15, line: 7]\n" + " [pc: 23, line: 9]\n" + " [pc: 29, line: 10]\n" + " Local variable table:\n" + " [pc: 0, pc: 30] local: b index: 0 type: boolean\n" + " [pc: 12, pc: 15] local: c index: 1 type: C\n" + " [pc: 23, pc: 30] local: c index: 1 type: C\n" + " Stack map table: number of frames 2\n" + " [pc: 15, same]\n" + " [pc: 23, append: {C}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test005() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String args[]) {\n" + " int i = 0, j, k, l;\n" + " boolean b;\n" + " if (i == 0 && (j = ++i) > 0)\n" + " i += j;\n" + " while (true) {\n" + " k = 3;\n" + " break;\n" + " } \n" + " i -= k;\n" + " b = false && (i = l) > 0;\n" + " if (i > 0)\n" + " l = i;\n" + " else\n" + " l = k;\n" + " j = l;\n" + " if (i != -1 || j != 3 || k != 3 || l != 3)\n" + " System.out.println(\"FAILED\");\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 6\n" + " public static void main(java.lang.String[] args);\n" + " 0 iconst_0\n" + " 1 istore_1 [i]\n" + " 2 iload_1 [i]\n" + " 3 ifne 19\n" + " 6 iinc 1 1 [i]\n" + " 9 iload_1 [i]\n" + " 10 dup\n" + " 11 istore_2 [j]\n" + " 12 ifle 19\n" + " 15 iload_1 [i]\n" + " 16 iload_2 [j]\n" + " 17 iadd\n" + " 18 istore_1 [i]\n" + " 19 iconst_3\n" + " 20 istore_3 [k]\n" + " 21 iload_1 [i]\n" + " 22 iload_3 [k]\n" + " 23 isub\n" + " 24 istore_1 [i]\n" + " 25 iconst_0\n" + " 26 istore 5 [b]\n" + " 28 iload_1 [i]\n" + " 29 ifle 38\n" + " 32 iload_1 [i]\n" + " 33 istore 4 [l]\n" + " 35 goto 41\n" + " 38 iload_3 [k]\n" + " 39 istore 4 [l]\n" + " 41 iload 4 [l]\n" + " 43 istore_2 [j]\n" + " 44 iload_1 [i]\n" + " 45 iconst_m1\n" + " 46 if_icmpne 65\n" + " 49 iload_2 [j]\n" + " 50 iconst_3\n" + " 51 if_icmpne 65\n" + " 54 iload_3 [k]\n" + " 55 iconst_3\n" + " 56 if_icmpne 65\n" + " 59 iload 4 [l]\n" + " 61 iconst_3\n" + " 62 if_icmpeq 73\n" + " 65 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 68 ldc <String \"FAILED\"> [22]\n" + " 70 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 73 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 76 ldc <String \"SUCCESS\"> [30]\n" + " 78 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 81 return\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 2, line: 5]\n" + " [pc: 15, line: 6]\n" + " [pc: 19, line: 8]\n" + " [pc: 21, line: 9]\n" + " [pc: 22, line: 11]\n" + " [pc: 25, line: 12]\n" + " [pc: 28, line: 13]\n" + " [pc: 32, line: 14]\n" + " [pc: 38, line: 16]\n" + " [pc: 41, line: 17]\n" + " [pc: 44, line: 18]\n" + " [pc: 65, line: 19]\n" + " [pc: 73, line: 20]\n" + " [pc: 81, line: 21]\n" + " Local variable table:\n" + " [pc: 0, pc: 82] local: args index: 0 type: java.lang.String[]\n" + " [pc: 2, pc: 82] local: i index: 1 type: int\n" + " [pc: 12, pc: 19] local: j index: 2 type: int\n" + " [pc: 44, pc: 82] local: j index: 2 type: int\n" + " [pc: 21, pc: 82] local: k index: 3 type: int\n" + " [pc: 35, pc: 38] local: l index: 4 type: int\n" + " [pc: 41, pc: 82] local: l index: 4 type: int\n" + " [pc: 28, pc: 82] local: b index: 5 type: boolean\n" + " Stack map table: number of frames 5\n" + " [pc: 19, append: {int}]\n" + " [pc: 38, full, stack: {}, locals: {java.lang.String[], int, _, int, _, int}]\n" + " [pc: 41, full, stack: {}, locals: {java.lang.String[], int, _, int, int, int}]\n" + " [pc: 65, full, stack: {}, locals: {java.lang.String[], int, int, int, int, int}]\n" + " [pc: 73, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test006() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " void foo (int n) {\n" + " synchronized (this) {\n" + " switch (n) {\n" + " case 1:\n" + " throw new NullPointerException();\n" + " }\n" + " }\n" + " }\n" + " public static void main(String args[]) {\n" + " try {\n" + " new X().foo(1);\n" + " } catch(Exception e) {\n" + " System.out.println(\"SUCCESS\"); \n" + " }\n" + " } \n" + "}", }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 (I)V\n" + " // Stack: 2, Locals: 3\n" + " void foo(int n);\n" + " 0 aload_0 [this]\n" + " 1 dup\n" + " 2 astore_2\n" + " 3 monitorenter\n" + " 4 iload_1 [n]\n" + " 5 tableswitch default: 32\n" + " case 1: 24\n" + " 24 new java.lang.NullPointerException [16]\n" + " 27 dup\n" + " 28 invokespecial java.lang.NullPointerException() [18]\n" + " 31 athrow\n" + " 32 aload_2\n" + " 33 monitorexit\n" + " 34 goto 40\n" + " 37 aload_2\n" + " 38 monitorexit\n" + " 39 athrow\n" + " 40 return\n" + " Exception Table:\n" + " [pc: 4, pc: 34] -> 37 when : any\n" + " [pc: 37, pc: 39] -> 37 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 4, line: 4]\n" + " [pc: 24, line: 6]\n" + " [pc: 32, line: 3]\n" + " [pc: 40, line: 9]\n" + " Local variable table:\n" + " [pc: 0, pc: 41] local: this index: 0 type: X\n" + " [pc: 0, pc: 41] local: n index: 1 type: int\n" + " Stack map table: number of frames 4\n" + " [pc: 24, append: {X}]\n" + " [pc: 32, same]\n" + " [pc: 37, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 40, chop 1 local(s)]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test007() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " StringBuffer foo2(boolean b) {\n" + " System.out.println(\"foo2\");\n" + " return new StringBuffer(b ? \"true\" : \"false\");\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 (Z)Ljava/lang/StringBuffer;\n" + " // Stack: 3, Locals: 2\n" + " java.lang.StringBuffer foo2(boolean b);\n" + " 0 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 3 ldc <String \"foo2\"> [22]\n" + " 5 invokevirtual java.io.PrintStream.println(java.lang.String) : void [23]\n" + " 8 new java.lang.StringBuffer [29]\n" + " 11 dup\n" + " 12 iload_1 [b]\n" + " 13 ifeq 21\n" + " 16 ldc <String \"true\"> [31]\n" + " 18 goto 23\n" + " 21 ldc <String \"false\"> [33]\n" + " 23 invokespecial java.lang.StringBuffer(java.lang.String) [35]\n" + " 26 areturn\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 8, line: 4]\n" + " Local variable table:\n" + " [pc: 0, pc: 27] local: this index: 0 type: X\n" + " [pc: 0, pc: 27] local: b index: 1 type: boolean\n" + " Stack map table: number of frames 2\n" + " [pc: 21, full, stack: {uninitialized(8), uninitialized(8)}, locals: {X, int}]\n" + " [pc: 23, full, stack: {uninitialized(8), uninitialized(8), java.lang.String}, locals: {X, int}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=141252 public void test008() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " int foo = 0;\n" + " String bar = \"zero\";\n" + " System.out.println((foo != 0) ? foo : bar);\n" + " }\n" + " <T extends Comparable<?>> void foo(T foo) {\n" + " T bar = null;\n" + " System.out.println((foo != null) ? foo : bar);\n" + " } \n" + "}\n", }, "zero"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 3\n" + " public static void main(java.lang.String[] args);\n" + " 0 iconst_0\n" + " 1 istore_1 [foo]\n" + " 2 ldc <String \"zero\"> [16]\n" + " 4 astore_2 [bar]\n" + " 5 getstatic java.lang.System.out : java.io.PrintStream [18]\n" + " 8 iload_1 [foo]\n" + " 9 ifeq 19\n" + " 12 iload_1 [foo]\n" + " 13 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [24]\n" + " 16 goto 20\n" + " 19 aload_2 [bar]\n" + " 20 invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" + " 23 return\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 2, line: 4]\n" + " [pc: 5, line: 5]\n" + " [pc: 23, line: 6]\n" + " Local variable table:\n" + " [pc: 0, pc: 24] local: args index: 0 type: java.lang.String[]\n" + " [pc: 2, pc: 24] local: foo index: 1 type: int\n" + " [pc: 5, pc: 24] local: bar index: 2 type: java.lang.String\n" + " Stack map table: number of frames 2\n" + " [pc: 19, full, stack: {java.io.PrintStream}, locals: {java.lang.String[], int, java.lang.String}]\n" + (this.complianceLevel >= ClassFileConstants.JDK1_8 ? // in 1.8 the ternary is resolved to its target type j.l.Object " [pc: 20, full, stack: {java.io.PrintStream, java.lang.Object}, locals: {java.lang.String[], int, java.lang.String}]\n" : " [pc: 20, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {java.lang.String[], int, java.lang.String}]\n") + " \n" + (this.complianceLevel >= ClassFileConstants.JDK1_8 ? " // Method descriptor #46 (Ljava/lang/Comparable;)V\n" : " // Method descriptor #48 (Ljava/lang/Comparable;)V\n") + " // Signature: <T::Ljava/lang/Comparable<*>;>(TT;)V\n" + " // Stack: 2, Locals: 3\n" + " void foo(java.lang.Comparable foo);\n" + " 0 aconst_null\n" + " 1 astore_2 [bar]\n" + " 2 getstatic java.lang.System.out : java.io.PrintStream [18]\n" + " 5 aload_1 [foo]\n" + " 6 ifnull 13\n" + " 9 aload_1 [foo]\n" + " 10 goto 14\n" + " 13 aload_2 [bar]\n" + " 14 invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" + " 17 return\n" + " Line numbers:\n" + " [pc: 0, line: 8]\n" + " [pc: 2, line: 9]\n" + " [pc: 17, line: 10]\n" + " Local variable table:\n" + " [pc: 0, pc: 18] local: this index: 0 type: X\n" + " [pc: 0, pc: 18] local: foo index: 1 type: java.lang.Comparable\n" + " [pc: 2, pc: 18] local: bar index: 2 type: java.lang.Comparable\n" + " Local variable type table:\n" + " [pc: 0, pc: 18] local: foo index: 1 type: T\n" + " [pc: 2, pc: 18] local: bar index: 2 type: T\n" + " Stack map table: number of frames 2\n" + " [pc: 13, full, stack: {java.io.PrintStream}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n" + (this.complianceLevel < ClassFileConstants.JDK1_8 ? " [pc: 14, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n" : // in 1.8 the ternary is resolved to its target type j.l.Object " [pc: 14, full, stack: {java.io.PrintStream, java.lang.Object}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n" ); int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test009() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " String s;\n" + " X() {\n" + " int i = 0;\n" + " if (s == null) {\n" + " System.out.print(\"PASSED\");\n" + " } else {\n" + " System.out.print(\"FAILED\");\n" + " }\n" + " System.out.print(\"DONE\" + i);\n" + " }\n" + " public static void main(String argv[]) {\n" + " new X();\n" + " }\n" + "}", }, "PASSEDDONE0"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #8 ()V\n" + " // Stack: 4, Locals: 2\n" + " X();\n" + " 0 aload_0 [this]\n" + " 1 invokespecial java.lang.Object() [10]\n" + " 4 iconst_0\n" + " 5 istore_1 [i]\n" + " 6 aload_0 [this]\n" + " 7 getfield X.s : java.lang.String [12]\n" + " 10 ifnonnull 24\n" + " 13 getstatic java.lang.System.out : java.io.PrintStream [14]\n" + " 16 ldc <String \"PASSED\"> [20]\n" + " 18 invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" + " 21 goto 32\n" + " 24 getstatic java.lang.System.out : java.io.PrintStream [14]\n" + " 27 ldc <String \"FAILED\"> [28]\n" + " 29 invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" + " 32 getstatic java.lang.System.out : java.io.PrintStream [14]\n" + " 35 new java.lang.StringBuilder [30]\n" + " 38 dup\n" + " 39 ldc <String \"DONE\"> [32]\n" + " 41 invokespecial java.lang.StringBuilder(java.lang.String) [34]\n" + " 44 iload_1 [i]\n" + " 45 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [36]\n" + " 48 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [40]\n" + " 51 invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" + " 54 return\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 4, line: 4]\n" + " [pc: 6, line: 5]\n" + " [pc: 13, line: 6]\n" + " [pc: 21, line: 7]\n" + " [pc: 24, line: 8]\n" + " [pc: 32, line: 10]\n" + " [pc: 54, line: 11]\n" + " Local variable table:\n" + " [pc: 0, pc: 55] local: this index: 0 type: X\n" + " [pc: 6, pc: 55] local: i index: 1 type: int\n" + " Stack map table: number of frames 2\n" + " [pc: 24, full, stack: {}, locals: {X, int}]\n" + " [pc: 32, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test010() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " int[] tab = new int[0];\n" + " Object o = tab;\n" + " Object o1 = null;\n" + " if (tab.length == 0) {\n" + " System.out.println(tab.getClass());\n" + " }\n" + " o1 = tab.clone();\n" + " }\n" + "}", }, "class [I"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 4\n" + " public static void main(java.lang.String[] args);\n" + " 0 iconst_0\n" + " 1 newarray int [10]\n" + " 3 astore_1 [tab]\n" + " 4 aload_1 [tab]\n" + " 5 astore_2 [o]\n" + " 6 aconst_null\n" + " 7 astore_3 [o1]\n" + " 8 aload_1 [tab]\n" + " 9 arraylength\n" + " 10 ifne 23\n" + " 13 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 16 aload_1 [tab]\n" + " 17 invokevirtual java.lang.Object.getClass() : java.lang.Class [22]\n" + " 20 invokevirtual java.io.PrintStream.println(java.lang.Object) : void [26]\n" + " 23 aload_1 [tab]\n" + " 24 invokevirtual int[].clone() : java.lang.Object [32]\n" + " 27 astore_3 [o1]\n" + " 28 return\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 4, line: 4]\n" + " [pc: 6, line: 5]\n" + " [pc: 8, line: 6]\n" + " [pc: 13, line: 7]\n" + " [pc: 23, line: 9]\n" + " [pc: 28, line: 10]\n" + " Local variable table:\n" + " [pc: 0, pc: 29] local: args index: 0 type: java.lang.String[]\n" + " [pc: 4, pc: 29] local: tab index: 1 type: int[]\n" + " [pc: 6, pc: 29] local: o index: 2 type: java.lang.Object\n" + " [pc: 8, pc: 29] local: o1 index: 3 type: java.lang.Object\n" + " Stack map table: number of frames 1\n" + " [pc: 23, append: {int[], java.lang.Object, java.lang.Object}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test011() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " Object o;\n" + "\n" + " public static void main(String[] args) {\n" + " X x;\n" + " for (int i = 0; i < 10; i++) {\n" + " if (i < 90) {\n" + " x = new X();\n" + " if (i > 4) {\n" + " x.o = new Object();\n" + " } else {\n" + " x.o = \"0\";\n" + " }\n" + " switch (i) {\n" + " case 0:\n" + " if (x.o instanceof String) {\n" + " System.out.print(\"1\");\n" + " }\n" + " break;\n" + " default: {\n" + " Object diff = x.o;\n" + " if (diff != null) {\n" + " System.out.print(\"2\");\n" + " }\n" + " }\n" + " }\n" + " }\n" + " }\n" + " }\n" + "}", }, "1222222222"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #17 ([Ljava/lang/String;)V\n" + " // Stack: 3, Locals: 4\n" + " public static void main(java.lang.String[] args);\n" + " 0 iconst_0\n" + " 1 istore_2 [i]\n" + " 2 goto 105\n" + " 5 iload_2 [i]\n" + " 6 bipush 90\n" + " 8 if_icmpge 102\n" + " 11 new X [1]\n" + " 14 dup\n" + " 15 invokespecial X() [18]\n" + " 18 astore_1 [x]\n" + " 19 iload_2 [i]\n" + " 20 iconst_4\n" + " 21 if_icmple 38\n" + " 24 aload_1 [x]\n" + " 25 new java.lang.Object [3]\n" + " 28 dup\n" + " 29 invokespecial java.lang.Object() [10]\n" + " 32 putfield X.o : java.lang.Object [19]\n" + " 35 goto 44\n" + " 38 aload_1 [x]\n" + " 39 ldc <String \"0\"> [21]\n" + " 41 putfield X.o : java.lang.Object [19]\n" + " 44 iload_2 [i]\n" + " 45 tableswitch default: 85\n" + " case 0: 64\n" + " 64 aload_1 [x]\n" + " 65 getfield X.o : java.lang.Object [19]\n" + " 68 instanceof java.lang.String [23]\n" + " 71 ifeq 102\n" + " 74 getstatic java.lang.System.out : java.io.PrintStream [25]\n" + " 77 ldc <String \"1\"> [31]\n" + " 79 invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" + " 82 goto 102\n" + " 85 aload_1 [x]\n" + " 86 getfield X.o : java.lang.Object [19]\n" + " 89 astore_3 [diff]\n" + " 90 aload_3 [diff]\n" + " 91 ifnull 102\n" + " 94 getstatic java.lang.System.out : java.io.PrintStream [25]\n" + " 97 ldc <String \"2\"> [39]\n" + " 99 invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" + " 102 iinc 2 1 [i]\n" + " 105 iload_2 [i]\n" + " 106 bipush 10\n" + " 108 if_icmplt 5\n" + " 111 return\n" + " Line numbers:\n" + " [pc: 0, line: 6]\n" + " [pc: 5, line: 7]\n" + " [pc: 11, line: 8]\n" + " [pc: 19, line: 9]\n" + " [pc: 24, line: 10]\n" + " [pc: 35, line: 11]\n" + " [pc: 38, line: 12]\n" + " [pc: 44, line: 14]\n" + " [pc: 64, line: 16]\n" + " [pc: 74, line: 17]\n" + " [pc: 82, line: 19]\n" + " [pc: 85, line: 21]\n" + " [pc: 90, line: 22]\n" + " [pc: 94, line: 23]\n" + " [pc: 102, line: 6]\n" + " [pc: 111, line: 29]\n" + " Local variable table:\n" + " [pc: 0, pc: 112] local: args index: 0 type: java.lang.String[]\n" + " [pc: 19, pc: 102] local: x index: 1 type: X\n" + " [pc: 2, pc: 111] local: i index: 2 type: int\n" + " [pc: 90, pc: 102] local: diff index: 3 type: java.lang.Object\n" + " Stack map table: number of frames 7\n" + " [pc: 5, full, stack: {}, locals: {java.lang.String[], _, int}]\n" + " [pc: 38, full, stack: {}, locals: {java.lang.String[], X, int}]\n" + " [pc: 44, same]\n" + " [pc: 64, same]\n" + " [pc: 85, same]\n" + " [pc: 102, full, stack: {}, locals: {java.lang.String[], _, int}]\n" + " [pc: 105, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test012() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " X x;\n" + " Object o;\n" + " for (int i = 0; i < 10; i++) {\n" + " if (i < 90) {\n" + " x = new X();\n" + " if (i > 4) {\n" + " o = new Object();\n" + " } else {\n" + " o = null;\n" + " }\n" + " switch (i) {\n" + " case 0:\n" + " if (o instanceof String) {\n" + " System.out.print(\"1\");\n" + " return;\n" + " } else {\n" + " break;\n" + " }\n" + " default: {\n" + " Object diff = o;\n" + " if (diff != null) {\n" + " System.out.print(\"2\");\n" + " }\n" + " break;\n" + " }\n" + " }\n" + " System.out.print(\"3\");\n" + " }\n" + " }\n" + " }\n" + "}", }, "333332323232323"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 5\n" + " public static void main(java.lang.String[] args);\n" + " 0 iconst_0\n" + " 1 istore_3 [i]\n" + " 2 goto 99\n" + " 5 iload_3 [i]\n" + " 6 bipush 90\n" + " 8 if_icmpge 96\n" + " 11 new X [1]\n" + " 14 dup\n" + " 15 invokespecial X() [16]\n" + " 18 astore_1 [x]\n" + " 19 iload_3 [i]\n" + " 20 iconst_4\n" + " 21 if_icmple 35\n" + " 24 new java.lang.Object [3]\n" + " 27 dup\n" + " 28 invokespecial java.lang.Object() [8]\n" + " 31 astore_2 [o]\n" + " 32 goto 37\n" + " 35 aconst_null\n" + " 36 astore_2 [o]\n" + " 37 iload_3 [i]\n" + " 38 tableswitch default: 72\n" + " case 0: 56\n" + " 56 aload_2 [o]\n" + " 57 instanceof java.lang.String [17]\n" + " 60 ifeq 88\n" + " 63 getstatic java.lang.System.out : java.io.PrintStream [19]\n" + " 66 ldc <String \"1\"> [25]\n" + " 68 invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" + " 71 return\n" + " 72 aload_2 [o]\n" + " 73 astore 4 [diff]\n" + " 75 aload 4 [diff]\n" + " 77 ifnull 88\n" + " 80 getstatic java.lang.System.out : java.io.PrintStream [19]\n" + " 83 ldc <String \"2\"> [33]\n" + " 85 invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" + " 88 getstatic java.lang.System.out : java.io.PrintStream [19]\n" + " 91 ldc <String \"3\"> [35]\n" + " 93 invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" + " 96 iinc 3 1 [i]\n" + " 99 iload_3 [i]\n" + " 100 bipush 10\n" + " 102 if_icmplt 5\n" + " 105 return\n" + " Line numbers:\n" + " [pc: 0, line: 5]\n" + " [pc: 5, line: 6]\n" + " [pc: 11, line: 7]\n" + " [pc: 19, line: 8]\n" + " [pc: 24, line: 9]\n" + " [pc: 32, line: 10]\n" + " [pc: 35, line: 11]\n" + " [pc: 37, line: 13]\n" + " [pc: 56, line: 15]\n" + " [pc: 63, line: 16]\n" + " [pc: 71, line: 17]\n" + " [pc: 72, line: 22]\n" + " [pc: 75, line: 23]\n" + " [pc: 80, line: 24]\n" + " [pc: 88, line: 29]\n" + " [pc: 96, line: 5]\n" + " [pc: 105, line: 32]\n" + " Local variable table:\n" + " [pc: 0, pc: 106] local: args index: 0 type: java.lang.String[]\n" + " [pc: 19, pc: 96] local: x index: 1 type: X\n" + " [pc: 32, pc: 35] local: o index: 2 type: java.lang.Object\n" + " [pc: 37, pc: 96] local: o index: 2 type: java.lang.Object\n" + " [pc: 2, pc: 105] local: i index: 3 type: int\n" + " [pc: 75, pc: 88] local: diff index: 4 type: java.lang.Object\n" + " Stack map table: number of frames 8\n" + " [pc: 5, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" + " [pc: 35, full, stack: {}, locals: {java.lang.String[], X, _, int}]\n" + " [pc: 37, full, stack: {}, locals: {java.lang.String[], X, java.lang.Object, int}]\n" + " [pc: 56, same]\n" + " [pc: 72, same]\n" + " [pc: 88, same]\n" + " [pc: 96, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" + " [pc: 99, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test013() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + "\n" + " void foo() {\n" + " synchronized (this) {\n" + " int n=0;\n" + " try {\n" + " Thread.sleep(n); \n" + " } catch (Exception e ) {\n" + " }\n" + " }\n" + " }\n" + " \n" + " public static void main(String[] args) {}\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 2, Locals: 4\n" + " void foo();\n" + " 0 aload_0 [this]\n" + " 1 dup\n" + " 2 astore_1\n" + " 3 monitorenter\n" + " 4 iconst_0\n" + " 5 istore_2 [n]\n" + " 6 iload_2 [n]\n" + " 7 i2l\n" + " 8 invokestatic java.lang.Thread.sleep(long) : void [15]\n" + " 11 goto 15\n" + " 14 astore_3\n" + " 15 aload_1\n" + " 16 monitorexit\n" + " 17 goto 23\n" + " 20 aload_1\n" + " 21 monitorexit\n" + " 22 athrow\n" + " 23 return\n" + " Exception Table:\n" + " [pc: 6, pc: 11] -> 14 when : java.lang.Exception\n" + " [pc: 4, pc: 17] -> 20 when : any\n" + " [pc: 20, pc: 22] -> 20 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 4, line: 5]\n" + " [pc: 6, line: 7]\n" + " [pc: 11, line: 8]\n" + " [pc: 15, line: 4]\n" + " [pc: 23, line: 11]\n" + " Local variable table:\n" + " [pc: 0, pc: 24] local: this index: 0 type: X\n" + " [pc: 6, pc: 15] local: n index: 2 type: int\n" + " Stack map table: number of frames 4\n" + " [pc: 14, full, stack: {java.lang.Exception}, locals: {X, X, int}]\n" + " [pc: 15, chop 1 local(s)]\n" + " [pc: 20, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 23, chop 1 local(s)]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test014() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " X() {\n" + " final int i;\n" + " synchronized (this) {\n" + " i = 8;\n" + " }\n" + " } \n" + " public static void main(String[] args) {}\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 2, Locals: 3\n" + " X();\n" + " 0 aload_0 [this]\n" + " 1 invokespecial java.lang.Object() [8]\n" + " 4 aload_0 [this]\n" + " 5 dup\n" + " 6 astore_2\n" + " 7 monitorenter\n" + " 8 bipush 8\n" + " 10 istore_1 [i]\n" + " 11 aload_2\n" + " 12 monitorexit\n" + " 13 goto 19\n" + " 16 aload_2\n" + " 17 monitorexit\n" + " 18 athrow\n" + " 19 return\n" + " Exception Table:\n" + " [pc: 8, pc: 13] -> 16 when : any\n" + " [pc: 16, pc: 18] -> 16 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 2]\n" + " [pc: 4, line: 4]\n" + " [pc: 8, line: 5]\n" + " [pc: 11, line: 4]\n" + " [pc: 19, line: 7]\n" + " Local variable table:\n" + " [pc: 0, pc: 20] local: this index: 0 type: X\n" + " [pc: 11, pc: 16] local: i index: 1 type: int\n" + " [pc: 19, pc: 20] local: i index: 1 type: int\n" + " Stack map table: number of frames 2\n" + " [pc: 16, full, stack: {java.lang.Throwable}, locals: {X, _, X}]\n" + " [pc: 19, full, stack: {}, locals: {X, int}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test015() throws Exception { this.runConformTest( new String[] { "X.java", "public enum X {\n" + " a1(1), a2(5), a3(11);\n" + " int value;\n" + " X(int a) {\n" + " value = a;\n" + " }\n" + " int value () {\n" + " return value;\n" + " }\n" + " public static void main(String argv[]) {\n" + " }\n" + " public static int foo() {\n" + " int val;\n" + " int res = 0;\n" + " int n = 0;\n" + " X[] vals = X.values();\n" + " for (int i = 0, max = vals.length; i < max; i++) {\n" + " X e = vals[i];\n" + " if ( n == 1) {\n" + " continue;\n" + " }\n" + " val = e.value();\n" + " System.out.println(val);\n" + " }\n" + " return res;\n" + " }\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #40 ()I\n" + " // Stack: 2, Locals: 7\n" + " public static int foo();\n" + " 0 iconst_0\n" + " 1 istore_1 [res]\n" + " 2 iconst_0\n" + " 3 istore_2 [n]\n" + " 4 invokestatic X.values() : X[] [46]\n" + " 7 astore_3 [vals]\n" + " 8 iconst_0\n" + " 9 istore 4 [i]\n" + " 11 aload_3 [vals]\n" + " 12 arraylength\n" + " 13 istore 5 [max]\n" + " 15 goto 48\n" + " 18 aload_3 [vals]\n" + " 19 iload 4 [i]\n" + " 21 aaload\n" + " 22 astore 6 [e]\n" + " 24 iload_2 [n]\n" + " 25 iconst_1\n" + " 26 if_icmpne 32\n" + " 29 goto 45\n" + " 32 aload 6 [e]\n" + " 34 invokevirtual X.value() : int [50]\n" + " 37 istore_0 [val]\n" + " 38 getstatic java.lang.System.out : java.io.PrintStream [52]\n" + " 41 iload_0 [val]\n" + " 42 invokevirtual java.io.PrintStream.println(int) : void [58]\n" + " 45 iinc 4 1 [i]\n" + " 48 iload 4 [i]\n" + " 50 iload 5 [max]\n" + " 52 if_icmplt 18\n" + " 55 iload_1 [res]\n" + " 56 ireturn\n" + " Line numbers:\n" + " [pc: 0, line: 14]\n" + " [pc: 2, line: 15]\n" + " [pc: 4, line: 16]\n" + " [pc: 8, line: 17]\n" + " [pc: 18, line: 18]\n" + " [pc: 24, line: 19]\n" + " [pc: 29, line: 20]\n" + " [pc: 32, line: 22]\n" + " [pc: 38, line: 23]\n" + " [pc: 45, line: 17]\n" + " [pc: 55, line: 25]\n" + " Local variable table:\n" + " [pc: 38, pc: 45] local: val index: 0 type: int\n" + " [pc: 2, pc: 57] local: res index: 1 type: int\n" + " [pc: 4, pc: 57] local: n index: 2 type: int\n" + " [pc: 8, pc: 57] local: vals index: 3 type: X[]\n" + " [pc: 11, pc: 55] local: i index: 4 type: int\n" + " [pc: 15, pc: 55] local: max index: 5 type: int\n" + " [pc: 24, pc: 45] local: e index: 6 type: X\n" + " Stack map table: number of frames 4\n" + " [pc: 18, full, stack: {}, locals: {_, int, int, X[], int, int}]\n" + " [pc: 32, append: {X}]\n" + " [pc: 45, chop 1 local(s)]\n" + " [pc: 48, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test016() throws Exception { this.runConformTest( new String[] { "X.java", "public enum X {\n" + " a1(1), a2(5), a3(11);\n" + " int value;\n" + " X(int a) {\n" + " value = a;\n" + " }\n" + " int value () {\n" + " return value;\n" + " }\n" + " public static void main(String argv[]) {\n" + " }\n" + " public static int foo() {\n" + " int val;\n" + " int res = 0;\n" + " int n = 0;\n" + " for (X e : X.values()) {\n" + " if ( n == 1) {\n" + " continue;\n" + " }\n" + " val = e.value();\n" + " System.out.println(val);\n" + " }\n" + " return res;\n" + " }\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #40 ()I\n" + " // Stack: 2, Locals: 7\n" + " public static int foo();\n" + " 0 iconst_0\n" + " 1 istore_1 [res]\n" + " 2 iconst_0\n" + " 3 istore_2 [n]\n" + " 4 invokestatic X.values() : X[] [46]\n" + " 7 dup\n" + " 8 astore 6\n" + " 10 arraylength\n" + " 11 istore 5\n" + " 13 iconst_0\n" + " 14 istore 4\n" + " 16 goto 48\n" + " 19 aload 6\n" + " 21 iload 4\n" + " 23 aaload\n" + " 24 astore_3 [e]\n" + " 25 iload_2 [n]\n" + " 26 iconst_1\n" + " 27 if_icmpne 33\n" + " 30 goto 45\n" + " 33 aload_3 [e]\n" + " 34 invokevirtual X.value() : int [50]\n" + " 37 istore_0 [val]\n" + " 38 getstatic java.lang.System.out : java.io.PrintStream [52]\n" + " 41 iload_0 [val]\n" + " 42 invokevirtual java.io.PrintStream.println(int) : void [58]\n" + " 45 iinc 4 1\n" + " 48 iload 4\n" + " 50 iload 5\n" + " 52 if_icmplt 19\n" + " 55 iload_1 [res]\n" + " 56 ireturn\n" + " Line numbers:\n" + " [pc: 0, line: 14]\n" + " [pc: 2, line: 15]\n" + " [pc: 4, line: 16]\n" + " [pc: 25, line: 17]\n" + " [pc: 30, line: 18]\n" + " [pc: 33, line: 20]\n" + " [pc: 38, line: 21]\n" + " [pc: 45, line: 16]\n" + " [pc: 55, line: 23]\n" + " Local variable table:\n" + " [pc: 38, pc: 45] local: val index: 0 type: int\n" + " [pc: 2, pc: 57] local: res index: 1 type: int\n" + " [pc: 4, pc: 57] local: n index: 2 type: int\n" + " [pc: 25, pc: 45] local: e index: 3 type: X\n" + " Stack map table: number of frames 4\n" + " [pc: 19, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" + " [pc: 33, full, stack: {}, locals: {_, int, int, X, int, int, X[]}]\n" + " [pc: 45, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" + " [pc: 48, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test017() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String argv[]) {\n" + " int i;\n" + " \n" + " switch (i = 0) {\n" + " case 0 :\n" + " i = 1;\n" + " break;\n" + " default :\n" + " ;\n" + " }\n" + " System.out.print(i);\n" + " }\n" + "}", }, "1"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 2\n" + " public static void main(java.lang.String[] argv);\n" + " 0 iconst_0\n" + " 1 dup\n" + " 2 istore_1 [i]\n" + " 3 tableswitch default: 22\n" + " case 0: 20\n" + " 20 iconst_1\n" + " 21 istore_1 [i]\n" + " 22 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 25 iload_1 [i]\n" + " 26 invokevirtual java.io.PrintStream.print(int) : void [22]\n" + " 29 return\n" + " Line numbers:\n" + " [pc: 0, line: 5]\n" + " [pc: 20, line: 7]\n" + " [pc: 22, line: 12]\n" + " [pc: 29, line: 13]\n" + " Local variable table:\n" + " [pc: 0, pc: 30] local: argv index: 0 type: java.lang.String[]\n" + " [pc: 3, pc: 30] local: i index: 1 type: int\n" + " Stack map table: number of frames 2\n" + " [pc: 20, append: {int}]\n" + " [pc: 22, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test018() { this.runConformTest( new String[] { "X.java", "import java.util.*;\n" + "\n" + "interface Sequence<Value_Type> extends Iterable<Value_Type>{\n" + "\n" + " Value_Type get(int i);\n" + " int length();\n" + " Value_Type set(int i, Value_Type value);\n" + "}\n" + "\n" + "class ArraySequence<Value_Type> implements Sequence<Value_Type> {\n" + "\n" + " public ArraySequence(int length) {}\n" + " public Value_Type get(int i) {\n" + " return null;\n" + " }\n" + " public int length() {\n" + " return 0;\n" + " }\n" + " public Value_Type set(int i, Value_Type value) {\n" + " return value;\n" + " }\n" + " public Iterator<Value_Type> iterator() {\n" + " return null;\n" + " }\n" + "}\n" + "\n" + "class BirBlock {\n" + " void setRole(IrBlock.Role role) {}\n" + "}\n" + "\n" + "class CatchChain {\n" + " int dispatcherAddress() {\n" + " return 0;\n" + " }\n" + "}\n" + "\n" + "class ExceptionHandlerInfo {\n" + " int handlerProgramCounter() {\n" + " return 0;\n" + " }\n" + "}\n" + "\n" + "interface IrBlock {\n" + " enum Role {\n" + " EXCEPTION_DISPATCHER\n" + " }\n" + "}\n" + "\n" + "class ClassMethodActor {\n" + " Sequence<ExceptionHandlerInfo> exceptionHandlerInfos() {\n" + " return null;\n" + " }\n" + "}\n" + "\n" + "public class X {\n" + "\n" + " private Sequence<CatchChain> _catchChains;\n" + " private ClassMethodActor _classMethodActor;\n" + "\n" + " public Sequence<BirBlock> getExceptionDispatchers(final BirBlock[] blockMap) {\n" + " final ArraySequence<BirBlock> dispatchers = new ArraySequence<BirBlock>(_catchChains.length());\n" + " for (int i = 0; i < _catchChains.length(); i++) {\n" + " final BirBlock dispatcher = blockMap[_catchChains.get(i).dispatcherAddress()];\n" + " dispatcher.setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" + " dispatchers.set(i, dispatcher);\n" + " }\n" + " for (ExceptionHandlerInfo exceptionHandlerInfo : _classMethodActor.exceptionHandlerInfos()) {\n" + " blockMap[exceptionHandlerInfo.handlerProgramCounter()].setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" + " }\n" + " return dispatchers;\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } public void test019() { this.runConformTest( new String[] { "X.java", "final public class X\n" + "{\n" + " final class MyClass\n" + " {\n" + " void method1(final String s)\n" + " {\n" + " }\n" + " }\n" + "\n" + " Object method1()\n" + " {\n" + " try\n" + " {\n" + " final MyClass myClass = null;\n" + "\n" + " try\n" + " {\n" + " return null;\n" + " }\n" + " catch (final Throwable ex)\n" + " {\n" + " myClass.method1(this == null ? \"\" : \"\");\n" + " }\n" + "\n" + " return null;\n" + " }\n" + " finally\n" + " {\n" + " {\n" + " }\n" + " }\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } public void test020() { this.runConformTest( new String[] { "X.java", "import java.util.*;\n" + "public class X {\n" + " public static Map make(boolean sorted) {\n" + " return (sorted) ? new TreeMap() : new HashMap();\n" + " }\n" + " public static void main(String[] args) {\n" + " make(false);\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // 155423 public void test021() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " {\n" + " if (true) throw new NullPointerException();\n" + " }\n" + " X() {\n" + " System.out.println();\n" + " }\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 2, Locals: 1\n" + " X();\n" + " 0 aload_0 [this]\n" + " 1 invokespecial java.lang.Object() [8]\n" + " 4 new java.lang.NullPointerException [10]\n" + " 7 dup\n" + " 8 invokespecial java.lang.NullPointerException() [12]\n" + " 11 athrow\n" + " Line numbers:\n" + " [pc: 0, line: 5]\n" + " [pc: 4, line: 3]\n" + " Local variable table:\n" + " [pc: 0, pc: 12] local: this index: 0 type: X\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // 157247 public void test022() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " String errorMessage;\n" + " try {\n" + " foo();\n" + " errorMessage = \"No exception thrown\";\n" + " } catch (Exception e) {\n" + " if (e instanceof NullPointerException) {\n" + " System.out.println(\"SUCCESS\");\n" + " return;\n" + " }\n" + " errorMessage = \"Exception thrown\" + e;\n" + " }\n" + " System.out.println(errorMessage);\n" + " }\n" + " public static void foo() {\n" + " throw new NullPointerException();\n" + " }\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=162965 public void test023() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " boolean a = true, x;\n" + " if (a ? false : (x = true))\n" + " a = x;\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } public void test024() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static final int MAX_PROPERTIES = 25;\n" + " public C c = new C();\n" + " void foo(int i) {\n" + " final int len = c.foo2();\n" + " A f = new A(\" Test \", i, 1, MAX_PROPERTIES) {\n" + " @Override\n" + " public double bar() {\n" + " return len;\n" + " }\n" + " @Override\n" + " public String toString() {\n" + " return \"SUCCESS\";\n" + " }\n" + " };\n" + " System.out.println(f);\n" + " }\n" + " public static void main(String[] args) {\n" + " new X().foo(0);\n" + " }\n" + "}", "A.java", "class A {\n" + " A(String s, double d, double d1, double d2) {}\n" + " public double bar() {\n" + " return 0.0;\n" + " }\n" + "}", "C.java", "class C {\n" + " public int foo2() {\n" + " return 0;\n" + " }\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169596 public void test025() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + " \n" + " void foo(Object[] o) {}\n" + "\n" + " void bar(boolean b) {\n" + " foo(new Object[] {\"\", \"\", b ? \"\" : \"\"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ \n" + " }\n" + "}" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017 public void test026() { this.runConformTest( new String[] { "X.java", "public class X {\n" + "\n" + " public static final Object EXIT_OK = new Object();\n" + " public static final Object EXIT_RELAUNCH = new Object();\n" + " public static final Object EXIT_RESTART = new Object();\n" + " public static final int RETURN_RESTART = 1;\n" + " public static final String PROP_EXIT_CODE = \"\";\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + " private static int createAndRunWorkbench(Display display, IDEWorkbenchAdvisor advisor) {\n" + " return 0;\n" + " }\n" + " \n" + " public Object run(Object args) throws Exception {\n" + " Display display = createDisplay();\n" + " try {\n" + " Shell shell = new Shell(display, SWT.ON_TOP);\n" + " try {\n" + " if (!checkInstanceLocation(shell)) {\n" + " Platform.endSplash();\n" + " return EXIT_OK;\n" + " }\n" + " } finally {\n" + " if (shell != null) {\n" + " shell.dispose();\n" + " }\n" + " }\n" + " int returnCode = X.createAndRunWorkbench(display,\n" + " new IDEWorkbenchAdvisor());\n" + " if (returnCode != X.RETURN_RESTART) {\n" + " return EXIT_OK;\n" + " }\n" + " return EXIT_RELAUNCH.equals(Integer.getInteger(PROP_EXIT_CODE)) ? EXIT_RELAUNCH\n" + " : EXIT_RESTART;\n" + " } finally {\n" + " if (display != null) {\n" + " display.dispose();\n" + " }\n" + " }\n" + " }\n" + " private boolean checkInstanceLocation(Shell shell) {\n" + " // TODO Auto-generated method stub\n" + " return false;\n" + " }\n" + " private Display createDisplay() {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "}", "Display.java", "class Display {\n" + "\n" + " public void dispose() {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + "}", "Shell.java", "class Shell {\n" + " public Shell(Display display, int i) {\n" + " // TODO Auto-generated constructor stub\n" + " }\n" + "\n" + " public void dispose() {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + "}", "Platform.java", "class Platform {\n" + "\n" + " public static void endSplash() {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + "}", "SWT.java", "class SWT {\n" + " public static final int ON_TOP = 1; \n" + "}", "IDEWorkbenchAdvisor.java", "class IDEWorkbenchAdvisor {\n" + "}" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017 public void test027() { this.runConformTest( new String[] { "X.java", "import java.io.IOException;\n" + "import java.io.InputStream;\n" + "public class X {\n" + " private static final int BUF_SIZE = 8192;\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + " BundleActivator activator;\n" + " BundleHost bundle;\n" + " public byte[] getBytes() throws IOException {\n" + " InputStream in = getInputStream();\n" + " int length = (int) getSize();\n" + " byte[] classbytes;\n" + " int bytesread = 0;\n" + " int readcount;\n" + " if (Debug.DEBUG && Debug.DEBUG_LOADER)\n" + " Debug.println(\" about to read \" + length + \" bytes from \" + getName()); //$NON-NLS-1$ //$NON-NLS-2$\n" + " try {\n" + " if (length > 0) {\n" + " classbytes = new byte[length];\n" + " for (; bytesread < length; bytesread += readcount) {\n" + " readcount = in.read(classbytes, bytesread, length - bytesread);\n" + " if (readcount <= 0)\n" + " break;\n" + " }\n" + " } else {\n" + " length = BUF_SIZE;\n" + " classbytes = new byte[length];\n" + " readloop: while (true) {\n" + " for (; bytesread < length; bytesread += readcount) {\n" + " readcount = in.read(classbytes, bytesread, length - bytesread);\n" + " if (readcount <= 0)\n" + " break readloop;\n" + " }\n" + " byte[] oldbytes = classbytes;\n" + " length += BUF_SIZE;\n" + " classbytes = new byte[length];\n" + " System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" + " }\n" + " }\n" + " if (classbytes.length > bytesread) {\n" + " byte[] oldbytes = classbytes;\n" + " classbytes = new byte[bytesread];\n" + " System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" + " }\n" + " } finally {\n" + " try {\n" + " in.close();\n" + " } catch (IOException ee) {\n" + " // ignore\n" + " }\n" + " }\n" + " return classbytes;\n" + " }\n" + " protected void stop(Throwable t) throws BundleException {\n" + " String clazz = \"\";//(activator == null) ? \"\" : activator.getClass().getName(); //$NON-NLS-1$\n" + " throw new BundleException(NLS.bind(Msg.BUNDLE_ACTIVATOR_EXCEPTION, new Object[] {clazz, \"stop\", bundle.getSymbolicName() == null ? \"\" + bundle.getBundleId() : bundle.getSymbolicName()}), t); //$NON-NLS-1$ //$NON-NLS-2$ \n" + " }\n" + " private String getName() {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + " private int getSize() {\n" + " // TODO Auto-generated method stub\n" + " return 0;\n" + " }\n" + " private InputStream getInputStream() {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "}", "Debug.java", "class Debug {\n" + " public static final boolean DEBUG = false;\n" + " public static final boolean DEBUG_LOADER = false;\n" + " public static final boolean DEBUG_GENERAL = false;\n" + " public static void println(String string) {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + " public static void printStackTrace(Throwable t) {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + "}", "AccessController.java", "class AccessController {\n" + " static void doPrivileged(Object o) {\n" + " }\n" + "}", "BundleException.java", "class BundleException extends Exception {\n" + " private static final long serialVersionUID = 5758882959559471648L;\n" + "\n" + " public BundleException(String bind, Throwable t) {\n" + " // TODO Auto-generated constructor stub\n" + " }\n" + "}", "PrivilegedExceptionAction.java", "class PrivilegedExceptionAction {\n" + "}", "BundleActivator.java", "class BundleActivator {\n" + " public void stop(X x) {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + "}", "BundleHost.java", "class BundleHost {\n" + " public Object getSymbolicName() {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + " public String getBundleId() {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "}", "NLS.java", "class NLS {\n" + " public static String bind(String bundleActivatorException, Object[] objects) {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "}", "PrivilegedActionException.java", "class PrivilegedActionException extends Exception {\n" + " private static final long serialVersionUID = 3919969055057660822L;\n" + " public Throwable getException() {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "}", "Msg.java", "class Msg {\n" + " public static final String BUNDLE_ACTIVATOR_EXCEPTION = \"\";\n" + "}" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017 public void test028() { this.runConformTest( new String[] { "X.java", "import java.io.StringReader;\n" + "\n" + "public class X {\n" + " public void loadVariablesAndContainers() {\n" + " // backward compatibility, consider persistent property \n" + " String qName = \"1\";\n" + " String xmlString = \"2\";\n" + " \n" + " try {\n" + " if (xmlString != null){\n" + " StringReader reader = new StringReader(xmlString);\n" + " Object o;\n" + " try {\n" + " StringBuffer buffer = null;\n" + " o = new Object();\n" + " } catch(RuntimeException e) {\n" + " return;\n" + " } catch(Exception e){\n" + " return;\n" + " } finally {\n" + " reader.close();\n" + " }\n" + " System.out.println(reader);\n" + " }\n" + " } catch(Exception e){\n" + " // problem loading xml file: nothing we can do\n" + " } finally {\n" + " if (xmlString != null){\n" + " System.out.println(xmlString);\n" + " }\n" + " }\n" + " }\n" + "\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472 public void test029() { this.runConformTest( new String[] { "X.java", "public class X {\n" + "\n" + " public Object foo() {\n" + " Object status;\n" + " try {\n" + " status= bar();\n" + " } catch (RuntimeException x) {\n" + " status= foo2(x);\n" + " } finally {\n" + " System.out.println();\n" + " }\n" + " return status;\n" + " }\n" + " public Object bar() {\n" + " return null;\n" + " }\n" + " public Object foo2(Exception e) {\n" + " return null;\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472 public void test030() { this.runConformTest( new String[] { "X.java", "import java.util.Collections;\n" + "import java.util.List;\n" + "public class X {\n" + "\n" + " private static final String COMPUTE_COMPLETION_PROPOSALS= \"computeCompletionProposals()\"; //$NON-NLS-1$\n" + " private Object fLastError;\n" + " private boolean fIsReportingDelay;\n" + " private CompletionProposalComputerRegistry fRegistry;\n" + " public List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {\n" + " if (!isEnabled())\n" + " return Collections.EMPTY_LIST;\n" + "\n" + " IStatus status;\n" + " try {\n" + " IJavaCompletionProposalComputer computer= getComputer();\n" + " if (computer == null) // not active yet\n" + " return Collections.EMPTY_LIST;\n" + " \n" + " try {\n" + " PerformanceStats stats= startMeter(context, computer);\n" + " List proposals= computer.computeCompletionProposals(context, monitor);\n" + " stopMeter(stats, COMPUTE_COMPLETION_PROPOSALS);\n" + " \n" + " if (proposals != null) {\n" + " fLastError= computer.getErrorMessage();\n" + " return proposals;\n" + " }\n" + " } finally {\n" + " fIsReportingDelay= true;\n" + " }\n" + " status= createAPIViolationStatus(COMPUTE_COMPLETION_PROPOSALS);\n" + " } catch (InvalidRegistryObjectException x) {\n" + " status= createExceptionStatus(x);\n" + " } catch (CoreException x) {\n" + " status= createExceptionStatus(x);\n" + " } catch (RuntimeException x) {\n" + " status= createExceptionStatus(x);\n" + " } finally {\n" + " monitor.done();\n" + " }\n" + "\n" + " fRegistry.informUser(this, status);\n" + "\n" + " return Collections.EMPTY_LIST;\n" + " }\n" + "\n" + " private IStatus createExceptionStatus(Exception x) {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "\n" + " private IStatus createAPIViolationStatus(String computeCompletionProposals) {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "\n" + " private void stopMeter(PerformanceStats stats, String computeCompletionProposals) {\n" + " // TODO Auto-generated method stub\n" + " \n" + " }\n" + "\n" + " private PerformanceStats startMeter(ContentAssistInvocationContext context, IJavaCompletionProposalComputer computer) {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "\n" + " private IJavaCompletionProposalComputer getComputer() throws CoreException, InvalidRegistryObjectException {\n" + " // TODO Auto-generated method stub\n" + " return null;\n" + " }\n" + "\n" + " private boolean isEnabled() {\n" + " // TODO Auto-generated method stub\n" + " return false;\n" + " }\n" + " \n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", "IProgressMonitor.java", "interface IProgressMonitor {\n" + " void done();\n" + "}", "ContentAssistInvocationContext.java", "class ContentAssistInvocationContext {\n" + "}", "IStatus.java", "interface IStatus {}", "IJavaCompletionProposalComputer.java", "import java.util.List;\n" + "interface IJavaCompletionProposalComputer {\n" + " List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor);\n" + " Object getErrorMessage();\n" + "}", "PerformanceStats.java", "class PerformanceStats {}", "CompletionProposalComputerRegistry.java", "class CompletionProposalComputerRegistry {\n" + " public void informUser(X x, IStatus status) {\n" + " }\n" + "}", "InvalidRegistryObjectException.java", "class InvalidRegistryObjectException extends Exception {\n" + " private static final long serialVersionUID = 8943194846421947853L;\n" + "}", "CoreException.java", "class CoreException extends Exception {\n" + " private static final long serialVersionUID = 3996792687633449517L;\n" + "}" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=168665 public void test031() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " String s;\n" + " X() {\n" + " this.s = \"\";\n" + " }\n" + " X(String s, double d, double d2, double i) {\n" + " this.s = s;\n" + " }\n" + " public static final int CONST = 1;\n" + " public int foo() {\n" + " return 0;\n" + " }\n" + " public double value(double d1) {\n" + " return d1;\n" + " }\n" + " public void bar(int start) {\n" + " final int len = foo();\n" + " X x = new X(\"SUCCESS\", start, 1, CONST) {\n" + " @Override\n" + " public double value(double newValue) {\n" + " return len;\n" + " }\n" + " };\n" + " System.out.println(x);\n" + " }\n" + " public static void main(String[] args) {\n" + " new X().bar(1);\n" + " }\n" + " public String toString() {\n" + " return this.s;\n" + " }\n" + "}", }, "SUCCESS"); } public void test032() { this.runConformTest( new String[] { "X.java", "import java.util.*;\n" + "public class X {\n" + " public static void main(String[] args) {\n" + " int i = args.length;\n" + " X[] array = new X[] { i == 0 ? null : null };\n" + " System.out.print(\"SUCCESS\" + array.length);\n" + " }\n" + "}", }, "SUCCESS1"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102 public void test033() { this.runConformTest( new String[] { "X.java", "public enum X {\n" + " C { @Override public boolean test() { return true; } };\n" + " static {\n" + " for (int i = 0; i < 1; i++) {}\n" + " }\n" + " public boolean test() {\n" + " return false;\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102 public void test034() { this.runConformTest( new String[] { "X.java", "public enum X {\n" + " C;\n" + " static {\n" + " for (int i = 0; i < 1; i++) {}\n" + " }\n" + " public boolean test() {\n" + " return false;\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // add more bytecode coverage: fneg, lneg, dneg, dstore_0, f2l, fstore_0, fstore_2, lstore_0 and saload public void test035() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " static double foo() {\n" + " double d = 3.0;\n" + " d = -d;\n" + " return d > 1.0 ? d : -d;\n" + " }\n" + "\n" + " static float foo2() {\n" + " float f = 3.0f;\n" + " int i = 0;\n" + " float f2 = f+ i;\n" + " long l = (long) f;\n" + " l += f2;\n" + " return i == 0 ? f : -f + (float) l;\n" + " }\n" + "\n" + " static long foo3() {\n" + " long l = Long.MAX_VALUE - 3;\n" + " boolean b = true;\n" + " return b ? l : -l;\n" + " }\n" + " \n" + " static short foo4() {\n" + " short[] tab = new short[] { 1, 2, 3 };\n" + " return tab.length == 3 ? tab[2] : (tab.length == 2 ? tab[1] : tab[0]);\n" + " }\n" + "\n" + " public static void main(String args[]) {\n" + " foo();\n" + " foo2();\n" + " foo3();\n" + " foo4();\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // fix verify error public void test036() { this.runConformTest( new String[] { "X.java", "import java.util.Map;\n" + "import java.util.Set;\n" + "\n" + "public class X {\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + " public void foo(Object o, boolean b) {\n" + " String[] models = new String[] {};\n" + " Map map = null;\n" + " Set set = null;\n" + " for (int n = 0; n < models.length; n++) { bar(models[n]); }\n" + " foo2(new Object(),\n" + " set,\n" + " map,\n" + " !b);\n" + " }\n" + " void bar(String s) {}\n" + " void foo2(Object o, Object s, Object m, boolean b) {}\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236336 public void test037() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + " String field;\n" + " String field2;\n" + " public void foo(int index, Object[] objs, Object[] objs2) {\n" + " String methodName = \"foo\";\n" + " int i = -1;\n" + " try {\n" + " switch (index) {\n" + " case 1130: {\n" + " int j = ((Integer) objs[0]).intValue();\n" + " int k = ((Integer) objs[0]).intValue();\n" + " {\n" + " String s = field;\n" + " String s2 = field2;\n" + " synchronized (s2) {\n" + " String s3 = s2;\n" + " try {\n" + " System.out.println(s);\n" + " System.out.println(s2);\n" + " System.out.println(s3);\n" + " } finally {\n" + " s2.toString();\n" + " }\n" + " }\n" + " }\n" + " }\n" + " break;\n" + " case 0 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 2 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 3 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 4 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 5 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 6 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 7 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 8 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 9 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 10 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 11 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 12 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 13 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 14 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 15 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 16 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 17 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 18 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 19 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 20 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 21 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 22 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 23 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 24 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 25 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 26 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 27 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 28 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 29 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 30 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 31 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 32 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 33 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 34 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 35 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 36 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 37 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 38 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 39 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 40 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 41 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 42 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 43 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 44 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 45 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 46 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 47 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 48 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 49 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 50 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 51 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 52 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 53 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 54 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 55 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 56 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 57 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 58 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 59 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 60 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 61 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 62 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 63 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 64 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 65 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 66 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 67 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 68 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 69 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 70 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 71 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 72 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 73 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 74 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 75 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 76 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 77 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 78 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 79 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 80 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 81 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 82 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 83 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 84 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 85 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 86 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 87 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 88 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 89 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 90 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 91 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 92 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 93 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 94 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 95 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 96 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 97 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 98 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 99 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 100 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 101 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 102 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 103 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 104 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 105 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 106 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 107 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 108 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 109 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 110 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 111 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 112 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 113 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 114 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 115 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 116 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 117 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 118 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 119 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 120 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 121 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 122 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 123 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 124 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 125 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 126 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 127 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 128 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 129 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 130 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 131 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 132 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 133 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 134 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 135 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 136 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 137 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 138 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 139 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 140 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 141 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 142 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 143 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 144 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 145 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 146 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 147 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 148 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 149 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 150 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 151 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 152 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 153 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 154 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 155 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 156 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 157 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 158 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 159 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 160 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 161 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 162 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 163 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 164 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 165 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 166 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 167 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 168 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 169 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 170 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 171 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 172 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 173 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 174 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 175 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 176 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 177 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 178 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 179 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 180 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 181 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 182 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 183 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 184 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 185 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 186 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 187 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 188 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 189 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 190 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 191 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 192 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 193 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 194 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 195 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 196 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 197 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 198 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 199 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 200 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 201 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 202 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 203 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 204 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 205 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 206 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 207 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 208 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 209 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 210 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 211 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 212 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 213 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 214 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 215 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 216 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 217 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 218 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 219 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 220 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 221 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 222 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 223 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 224 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 225 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 226 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 227 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 228 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 229 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 230 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 231 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 232 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 233 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 234 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 235 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 236 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 237 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 238 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 239 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 240 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 241 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 242 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 243 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 244 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 245 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 246 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 247 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 248 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 249 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 250 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 251 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 252 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 253 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 254 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 255 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 256 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 257 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 258 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 259 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 260 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 261 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 262 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 263 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 264 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 265 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 266 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 267 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 268 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 269 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 270 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 271 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 272 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 273 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 274 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 275 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 276 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 277 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 278 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 279 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 280 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 281 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 282 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 283 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 284 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 285 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 286 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 287 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 288 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 289 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 290 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 291 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 292 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 293 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 294 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 295 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 296 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 297 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 298 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 299 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 300 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 301 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 302 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 303 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 304 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 305 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 306 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 307 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 308 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 309 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 310 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 311 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 312 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 313 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 314 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 315 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 316 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 317 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 318 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 319 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 320 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 321 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 322 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 323 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 324 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 325 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 326 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 327 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 328 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 329 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 330 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 331 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 332 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 333 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 334 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 335 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 336 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 337 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 338 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 339 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 340 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 341 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 342 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 343 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 344 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 345 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 346 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 347 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 348 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 349 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 350 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 351 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 352 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 353 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 354 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 355 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 356 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 357 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 358 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 359 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 360 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 361 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 362 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 363 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 364 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 365 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 366 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 367 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 368 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 369 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 370 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 371 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 372 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 373 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 374 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 375 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 376 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 377 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 378 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 379 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 380 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 381 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 382 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 383 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 384 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 385 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 386 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 387 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 388 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 389 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 390 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 391 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 392 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 393 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 394 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 395 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 396 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 397 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 398 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 399 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 400 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 401 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 402 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 403 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 404 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 405 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 406 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 407 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 408 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 409 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 410 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 411 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 412 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 413 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 414 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 415 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 416 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 417 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 418 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 419 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 420 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 421 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 422 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 423 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 424 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 425 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 426 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 427 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 428 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 429 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 430 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 431 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 432 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 433 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 434 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 435 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 436 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 437 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 438 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 439 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 440 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 441 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 442 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 443 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 444 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 445 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 446 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 447 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 448 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 449 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 450 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 451 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 452 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 453 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 454 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 455 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 456 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 457 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 458 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 459 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 460 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 461 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 462 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 463 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 464 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 465 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 466 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 467 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 468 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 469 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 470 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 471 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 472 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 473 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 474 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 475 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 476 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 477 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 478 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 479 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 480 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 481 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 482 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 483 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 484 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 485 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 486 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 487 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 488 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 489 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 490 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 491 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 492 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 493 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 494 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 495 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 496 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 497 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 498 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 499 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 500 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 501 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 502 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 503 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 504 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 505 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 506 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 507 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 508 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 509 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 510 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 511 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 512 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 513 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 514 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 515 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 516 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 517 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 518 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 519 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 520 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 521 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 522 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 523 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 524 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 525 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 526 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 527 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 528 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 529 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 530 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 531 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 532 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 533 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 534 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 535 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 536 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 537 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 538 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 539 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 540 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 541 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 542 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 543 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 544 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 545 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 546 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 547 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 548 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 549 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 550 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 551 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 552 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 553 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 554 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 555 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 556 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 557 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 558 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 559 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 560 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 561 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 562 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 563 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 564 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 565 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 566 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 567 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 568 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 569 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 570 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 571 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 572 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 573 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 574 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 575 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 576 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 577 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 578 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 579 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 580 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 581 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 582 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 583 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 584 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 585 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 586 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 587 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 588 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 589 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 590 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 591 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 592 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 593 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 594 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 595 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 596 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 597 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 598 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 599 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 600 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 601 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 602 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 603 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 604 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 605 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 606 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 607 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 608 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 609 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 610 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 611 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 612 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 613 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 614 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 615 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 616 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 617 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 618 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 619 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 620 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 621 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 622 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 623 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 624 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 625 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 626 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 627 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 628 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 629 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 630 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 631 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 632 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 633 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 634 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 635 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 636 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 637 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 638 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 639 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 640 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 641 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 642 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 643 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 644 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 645 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 646 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 647 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 648 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 649 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 650 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 651 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 652 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 653 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 654 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 655 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 656 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 657 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 658 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 659 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 660 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 661 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 662 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 663 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 664 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 665 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 666 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 667 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 668 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 669 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 670 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 671 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 672 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 673 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 674 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 675 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 676 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 677 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 678 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 679 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 680 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 681 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 682 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 683 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 684 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 685 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 686 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 687 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 688 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 689 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 690 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 691 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 692 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 693 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 694 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 695 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 696 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 697 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 698 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 699 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 700 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 701 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 702 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 703 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 704 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 705 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 706 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 707 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 708 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 709 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 710 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 711 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 712 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 713 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 714 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 715 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 716 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 717 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 718 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 719 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 720 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 721 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 722 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 723 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 724 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 725 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 726 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 727 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 728 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 729 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 730 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 731 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 732 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 733 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 734 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 735 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 736 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 737 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 738 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 739 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 740 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 741 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 742 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 743 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 744 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 745 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 746 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 747 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 748 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 749 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 750 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 751 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 752 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 753 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 754 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 755 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 756 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 757 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 758 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 759 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 760 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 761 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 762 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 763 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 764 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 765 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 766 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 767 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 768 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 769 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 770 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 771 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 772 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 773 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 774 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 775 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 776 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 777 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 778 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 779 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 780 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 781 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 782 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 783 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 784 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 785 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 786 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 787 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 788 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 789 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 790 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 791 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 792 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 793 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 794 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 795 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 796 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 797 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 798 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 799 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 800 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 801 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 802 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 803 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 804 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 805 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 806 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 807 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 808 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 809 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 810 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 811 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 812 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 813 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 814 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 815 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 816 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 817 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 818 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 819 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 820 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 821 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 822 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 823 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 824 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 825 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 826 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 827 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 828 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 829 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 830 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 831 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 832 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 833 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 834 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 835 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 836 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 837 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 838 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 839 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 840 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 841 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 842 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 843 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 844 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 845 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 846 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 847 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 848 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 849 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 850 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 851 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 852 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 853 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 854 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 855 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 856 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 857 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 858 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 859 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 860 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 861 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 862 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 863 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 864 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 865 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 866 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 867 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 868 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 869 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 870 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 871 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 872 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 873 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 874 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 875 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 876 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 877 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 878 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 879 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 880 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 881 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 882 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 883 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 884 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 885 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 886 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 887 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 888 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 889 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 890 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 891 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 892 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 893 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 894 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 895 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 896 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 897 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 898 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 899 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 900 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 901 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 902 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 903 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 904 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 905 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 906 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 907 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 908 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 909 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 910 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 911 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 912 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 913 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 914 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 915 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 916 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 917 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 918 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 919 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 920 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 921 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 922 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 923 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 924 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 925 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 926 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 927 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 928 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 929 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 930 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 931 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 932 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 933 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 934 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 935 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 936 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 937 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 938 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 939 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 940 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 941 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 942 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 943 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 944 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 945 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 946 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 947 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 948 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 949 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 950 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 951 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 952 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 953 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 954 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 955 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 956 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 957 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 958 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 959 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 960 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 961 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 962 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 963 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 964 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 965 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 966 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 967 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 968 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 969 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 970 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 971 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 972 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 973 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 974 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 975 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 976 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 977 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 978 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 979 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 980 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 981 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 982 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 983 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 984 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 985 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 986 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 987 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 988 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 989 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 990 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 991 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 992 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 993 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 994 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 995 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 996 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 997 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 998 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 999 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1000 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1001 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1002 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1003 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1004 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1005 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1006 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1007 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1008 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1009 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1010 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1011 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1012 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1013 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1014 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1015 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1016 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1017 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1018 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1019 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1020 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1021 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1022 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1023 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1024 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1025 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1026 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1027 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1028 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1029 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1030 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1031 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1032 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1033 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1034 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1035 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1036 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1037 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1038 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1039 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1040 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1041 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1042 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1043 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1044 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1045 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1046 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1047 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1048 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1049 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1050 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1051 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1052 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1053 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1054 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1055 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1056 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1057 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1058 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1059 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1060 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1061 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1062 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1063 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1064 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1065 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1066 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1067 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1068 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1069 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1070 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1071 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1072 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1073 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1074 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1075 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1076 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1077 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1078 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1079 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1080 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1081 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1082 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1083 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1084 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1085 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1086 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1087 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1088 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1089 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1090 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1091 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1092 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1093 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1094 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1095 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1096 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1097 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1098 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1099 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1100 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1101 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1102 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1103 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1104 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1105 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1106 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1107 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1108 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1109 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1110 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1111 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1112 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1113 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1114 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1115 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1116 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1117 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1118 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1119 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1120 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1121 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1122 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1123 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1124 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1125 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1126 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1127 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1128 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " case 1129 :\n" + " System.out.println(methodName + i);\n" + " break;\n" + " }\n" + " } catch(Exception e) {\n" + " e.printStackTrace();\n" + " }\n" + " }" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=238923 public void test038() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " {\n" + " for (boolean b : new boolean[] {}) {}\n" + " }\n" + " public X() {}\n" + " public X(boolean b) {}\n" + " public static void main(String[] args) {\n" + " System.out.print(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=237931 public void test039() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public String[][] foo(String s) {\n" + " return\n" + " new String[][] { {\" \", s != null ? s : \"\" },\n" + " {\" \", s != null ? s : \"\" },\n" + " {\" \", s != null ? s : \"\" },\n" + " {\" \", s != null ? s : \"\" } };\n" + " }\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539 public void test040() throws Exception { this.runConformTest( new String[] { "I.java", "public interface I {\n" + "\n" + " public Object foo();\n" + "\n" + " public static class B implements I {\n" + " public Object foo() {\n" + " return X.myI.foo();\n" + " }\n" + " }\n" + "}", "X.java", "public class X {\n" + " public static final I myI = new I.B() {\n" + " int a = 0;\n" + " int b = 1;\n" + " };\n" + "\n" + " private Object bar2() {\n" + " return null;\n" + " }\n" + " private Object bar() {\n" + " Object o = bar2();\n" + " if (o != null) {\n" + " o.toString();\n" + " }\n" + " return null;\n" + " }\n" + "\n" + "}", }, ""); String expectedOutput = " // Method descriptor #23 ()Ljava/lang/Object;\n" + " // Stack: 1, Locals: 2\n" + " private java.lang.Object bar();\n" + " 0 aload_0 [this]\n" + " 1 invokespecial X.bar2() : java.lang.Object [25]\n" + " 4 astore_1 [o]\n" + " 5 aload_1 [o]\n" + " 6 ifnull 14\n" + " 9 aload_1 [o]\n" + " 10 invokevirtual java.lang.Object.toString() : java.lang.String [27]\n" + " 13 pop\n" + " 14 aconst_null\n" + " 15 areturn\n" + " Line numbers:\n" + " [pc: 0, line: 11]\n" + " [pc: 5, line: 12]\n" + " [pc: 9, line: 13]\n" + " [pc: 14, line: 15]\n" + " Local variable table:\n" + " [pc: 0, pc: 16] local: this index: 0 type: X\n" + " [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" + " Stack map table: number of frames 1\n" + " [pc: 14, append: {java.lang.Object}]\n"; checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539 public void test041() throws Exception { this.runConformTest( new String[] { "I.java", "public interface I {\n" + "\n" + " public Object foo();\n" + "\n" + " public static class B implements I {\n" + " public Object foo() {\n" + " return String.valueOf(X.myI.foo()) + String.valueOf(X.myU.foo());\n" + " }\n" + " }\n" + "}", "X.java", "public class X {\n" + " public static final I myI = new I.B() {\n" + " int a = 0;\n" + " int b = 1;\n" + " };\n" + " public static final I myU = new I.B() {\n" + " int a = 0;\n" + " int b = 1;\n" + " int c = 2;\n" + " };\n" + " private Object bar2() {\n" + " return null;\n" + " }\n" + " private Object bar() {\n" + " Object o = bar2();\n" + " if (o != null) {\n" + " o.toString();\n" + " }\n" + " return null;\n" + " }\n" + "}", }, ""); String expectedOutput = " // Method descriptor #29 ()Ljava/lang/Object;\n" + " // Stack: 1, Locals: 2\n" + " private java.lang.Object bar();\n" + " 0 aload_0 [this]\n" + " 1 invokespecial X.bar2() : java.lang.Object [31]\n" + " 4 astore_1 [o]\n" + " 5 aload_1 [o]\n" + " 6 ifnull 14\n" + " 9 aload_1 [o]\n" + " 10 invokevirtual java.lang.Object.toString() : java.lang.String [33]\n" + " 13 pop\n" + " 14 aconst_null\n" + " 15 areturn\n" + " Line numbers:\n" + " [pc: 0, line: 15]\n" + " [pc: 5, line: 16]\n" + " [pc: 9, line: 17]\n" + " [pc: 14, line: 19]\n" + " Local variable table:\n" + " [pc: 0, pc: 16] local: this index: 0 type: X\n" + " [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" + " Stack map table: number of frames 1\n" + " [pc: 14, append: {java.lang.Object}]\n"; checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=260031 public void test042() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " private static void foo(Class<?> c, int n) { }\n" + " public static void main(String... args) {\n" + " foo(Integer.class, (args == null ? -1 : 1));\n" + " }\n" + "}", }, ""); String expectedOutput = " // Stack: 2, Locals: 1\n" + " public static void main(java.lang.String... args);\n" + " 0 ldc <Class java.lang.Integer> [26]\n" + " 2 aload_0 [args]\n" + " 3 ifnonnull 10\n" + " 6 iconst_m1\n" + " 7 goto 11\n" + " 10 iconst_1\n" + " 11 invokestatic X.foo(java.lang.Class, int) : void [28]\n" + " 14 return\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 14, line: 5]\n" + " Local variable table:\n" + " [pc: 0, pc: 15] local: args index: 0 type: java.lang.String[]\n" + " Stack map table: number of frames 2\n" + " [pc: 10, same_locals_1_stack_item, stack: {java.lang.Class}]\n" + " [pc: 11, full, stack: {java.lang.Class, int}, locals: {java.lang.String[]}]\n"; checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183 public void test043() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " System.out.println(\"ok\");\n" + " }\n" + " private static int willNotVerify() {\n" + " int limit = 100;\n" + " int match;\n" + " int result = 200;\n" + " do {\n" + " if (limit > 0) {\n" + " continue;\n" + " }\n" + " match = 0;\n" + " while (++match < 100) {\n" + " System.out.println();\n" + " }\n" + " } while (--limit != 0);\n" + " return result;\n" + " }\n" + "}", }, "ok"); String expectedOutput = " // Method descriptor #33 ()I\n" + " // Stack: 2, Locals: 3\n" + " private static int willNotVerify();\n" + " 0 bipush 100\n" + " 2 istore_0 [limit]\n" + " 3 sipush 200\n" + " 6 istore_2 [result]\n" + " 7 iload_0 [limit]\n" + " 8 ifle 14\n" + " 11 goto 34\n" + " 14 iconst_0\n" + " 15 istore_1 [match]\n" + " 16 goto 25\n" + " 19 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 22 invokevirtual java.io.PrintStream.println() : void [34]\n" + " 25 iinc 1 1 [match]\n" + " 28 iload_1 [match]\n" + " 29 bipush 100\n" + " 31 if_icmplt 19\n" + " 34 iinc 0 -1 [limit]\n" + " 37 iload_0 [limit]\n" + " 38 ifne 7\n" + " 41 iload_2 [result]\n" + " 42 ireturn\n" + " Line numbers:\n" + " [pc: 0, line: 6]\n" + " [pc: 3, line: 8]\n" + " [pc: 7, line: 10]\n" + " [pc: 11, line: 11]\n" + " [pc: 14, line: 13]\n" + " [pc: 16, line: 14]\n" + " [pc: 19, line: 15]\n" + " [pc: 25, line: 14]\n" + " [pc: 34, line: 17]\n" + " [pc: 41, line: 18]\n" + " Local variable table:\n" + " [pc: 3, pc: 43] local: limit index: 0 type: int\n" + " [pc: 16, pc: 34] local: match index: 1 type: int\n" + " [pc: 7, pc: 43] local: result index: 2 type: int\n" + " Stack map table: number of frames 5\n" + " [pc: 7, full, stack: {}, locals: {int, _, int}]\n" + " [pc: 14, same]\n" + " [pc: 19, full, stack: {}, locals: {int, int, int}]\n" + " [pc: 25, same]\n" + " [pc: 34, full, stack: {}, locals: {int, _, int}]\n"; checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183 public void test044() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " System.out.println(\"ok\");\n" + " }\n" + " private static int willNotVerify() {\n" + " int limit = 100;\n" + " int match;\n" + " int result = 200;\n" + " do {\n" + " if (limit > 0) {\n" + " continue;\n" + " }\n" + " match = 0;\n" + " while (++match < 100) {\n" + " // empty\n" + " }\n" + " } while (--limit != 0);\n" + " return result;\n" + " }\n" + "}", }, "ok"); String expectedOutput = " // Method descriptor #33 ()I\n" + " // Stack: 2, Locals: 3\n" + " private static int willNotVerify();\n" + " 0 bipush 100\n" + " 2 istore_0 [limit]\n" + " 3 sipush 200\n" + " 6 istore_2 [result]\n" + " 7 iload_0 [limit]\n" + " 8 ifle 14\n" + " 11 goto 25\n" + " 14 iconst_0\n" + " 15 istore_1 [match]\n" + " 16 iinc 1 1 [match]\n" + " 19 iload_1 [match]\n" + " 20 bipush 100\n" + " 22 if_icmplt 16\n" + " 25 iinc 0 -1 [limit]\n" + " 28 iload_0 [limit]\n" + " 29 ifne 7\n" + " 32 iload_2 [result]\n" + " 33 ireturn\n" + " Line numbers:\n" + " [pc: 0, line: 6]\n" + " [pc: 3, line: 8]\n" + " [pc: 7, line: 10]\n" + " [pc: 11, line: 11]\n" + " [pc: 14, line: 13]\n" + " [pc: 16, line: 14]\n" + " [pc: 25, line: 17]\n" + " [pc: 32, line: 18]\n" + " Local variable table:\n" + " [pc: 3, pc: 34] local: limit index: 0 type: int\n" + " [pc: 16, pc: 25] local: match index: 1 type: int\n" + " [pc: 7, pc: 34] local: result index: 2 type: int\n" + " Stack map table: number of frames 4\n" + " [pc: 7, full, stack: {}, locals: {int, _, int}]\n" + " [pc: 14, same]\n" + " [pc: 16, full, stack: {}, locals: {int, int, int}]\n" + " [pc: 25, full, stack: {}, locals: {int, _, int}]\n"; checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183 public void test045() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String args[]) {\n" + " int i;\n" + " do {\n" + " } while ((i = 2) < 0);\n" + " if (i != 2) {\n" + " System.out.println(\"FAILED\");\n" + " } else {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + " }\n" + "}", }, "SUCCESS"); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 2\n" + " public static void main(java.lang.String[] args);\n" + " 0 iconst_2\n" + " 1 dup\n" + " 2 istore_1 [i]\n" + " 3 iflt 0\n" + " 6 iload_1 [i]\n" + " 7 iconst_2\n" + " 8 if_icmpeq 22\n" + " 11 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 14 ldc <String \"FAILED\"> [22]\n" + " 16 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 19 goto 30\n" + " 22 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + " 25 ldc <String \"SUCCESS\"> [30]\n" + " 27 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 30 return\n" + " Line numbers:\n" + " [pc: 0, line: 5]\n" + " [pc: 3, line: 4]\n" + " [pc: 6, line: 6]\n" + " [pc: 11, line: 7]\n" + " [pc: 19, line: 8]\n" + " [pc: 22, line: 9]\n" + " [pc: 30, line: 11]\n" + " Local variable table:\n" + " [pc: 0, pc: 31] local: args index: 0 type: java.lang.String[]\n" + " [pc: 3, pc: 31] local: i index: 1 type: int\n" + " Stack map table: number of frames 3\n" + " [pc: 0, same]\n" + " [pc: 22, append: {int}]\n" + " [pc: 30, same]\n"; checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); } // 298250 public void test046() { Map customOptions = getCompilerOptions(); customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE); this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " class E1 extends RuntimeException {\n" + " private static final long serialVersionUID = 1L;\n" + " }\n" + " static Object bar() {\n" + " return new Object() {\n" + " public void foo() {\n" + " if (condition())\n" + " throw new E1();\n" + " }\n" + " };\n" + " }\n" + " static boolean condition() {\n" + " return false;\n" + " }\n" + " public static void main(String[] args) {\n" + " }\n" + "}\n" + "", }, "----------\n" + "1. ERROR in X.java (at line 9)\n" + " throw new E1();\n" + " ^^^^^^^^\n" + "No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instance of type X (e.g. x.new A() where x is an instance of X).\n" + "----------\n", null, true, customOptions); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=324848 public void test047() { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public static void test() {\n" + " final boolean x = true;\n" + " new Runnable() {\n" + " @Override\n" + " public void run() {\n" + " synchronized (X.this) {\n" + " System.out.println(x);\n" + " }\n" + " }\n" + " };\n" + " }\n" + "}" }, "----------\n" + "1. ERROR in X.java (at line 7)\n" + " synchronized (X.this) {\n" + " ^^^^^^\n" + "No enclosing instance of the type X is accessible in scope\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653 public void test048() { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] p) {\n" + " int i;\n" + " try {\n" + " if (p == null || p == null)\n" + " return;\n" + " i = 0;\n" + " } finally {\n" + " i = 0;\n" + " }\n" + " }\n" + "}\n" }, ""); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653 public void test049() { this.runConformTest( new String[] { "X.java", "import java.io.IOException;\n" + "import java.io.InputStream;\n" + "\n" + "public class X implements Runnable {\n" + "\n" + " private boolean contentEquals(final String src, final String tar)\n" + " throws IOException {\n" + " if (src == null && tar == null) {\n" + " return true;\n" + " }\n" + " if (!isFile(src) || !isFile(tar))\n" + " throw new IOException(\"cannot compare non-files\");\n" + " if (size(src) != size(tar))\n" + " return false;\n" + " final byte[] baSrc = new byte[8192];\n" + " final byte[] baTar = new byte[baSrc.length];\n" + " int lrSrc;\n" + " int lrTar;\n" + " InputStream isSrc = null;\n" + " InputStream isTar = null;\n" + " try {\n" + " isSrc = newInputStream(src);\n" + " if (isSrc == null)\n" + " return false;\n" + " isTar = newInputStream(tar);\n" + " if (isTar == null)\n" + " return false;\n" + " do {\n" + " lrSrc = isSrc.read(baSrc);\n" + " lrTar = isTar.read(baTar);\n" + " if (lrSrc != lrTar)\n" + " return false;\n" + " for (int i = 0; i < lrSrc; i++)\n" + " if (baSrc[i] != baTar[i])\n" + " return false;\n" + " } while ((lrSrc >= 0) && (lrSrc == lrTar));\n" + " } finally {\n" + " try {\n" + " close(isSrc);\n" + " } finally {\n" + " close(isTar);\n" + " }\n" + " }\n" + " return true;\n" + " }\n" + " private void close(final InputStream isSrc) {\n" + " }\n" + " private boolean isFile(final String src) {\n" + " return false;\n" + " }\n" + " public void run() {\n" + " try {\n" + " System.out.println(contentEquals(null, null));\n" + " } catch (final IOException e) {\n" + " e.printStackTrace();\n" + " }\n" + " }\n" + " static InputStream newInputStream(String path) {\n" + " return null;\n" + " }\n" + " static int size(String path) {\n" + " return 0;\n" + " }\n" + " public static void main(final String[] args) {\n" + " new X().run();\n" + " }\n" + "}" }, "true"); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145 public void test050() { this.runConformTest( new String[] { "X.java", "import java.io.File;\n" + "import java.io.FileFilter;\n" + "import java.io.FileNotFoundException;\n" + "import java.io.IOException;\n" + "import java.util.ArrayList;\n" + "import java.util.List;\n" + "\n" + "public class X {\n" + "\n" + " public static final List<File> copyDir(List<File> lf,\n" + " final boolean overwrite, final boolean recursive,\n" + " final boolean returnSrc, final File src, final File tar,\n" + " final FileFilter filter) throws IOException {\n" + " if (!src.isDirectory())\n" + " throw new FileNotFoundException(\"not a directory: \" + src);\n" + " if (!tar.isDirectory())\n" + " throw new FileNotFoundException(\"not a directory: \" + tar);\n" + " final File[] fa = src.listFiles();\n" + " if (fa == null)\n" + " throw new FileNotFoundException(\"directory not accessible: \" + src);\n" + " if (lf == null)\n" + " lf = new ArrayList<File>(fa.length);\n" + " for (final File f : fa) {\n" + " final File right = new File(tar, f.getName());\n" + " if (f.isDirectory()) {\n" + " if (recursive && filter.accept(f)) {\n" + " if (!right.exists())\n" + " right.mkdir();\n" + " copyDir(lf, overwrite, recursive, returnSrc, f, right,\n" + " filter);\n" + " }\n" + " } else {\n" + " if (overwrite || (!right.exists() && filter.accept(f))) {\n" + " lf.add(returnSrc ? f : right);\n" + " }\n" + " }\n" + " }\n" + " return lf;\n" + " }\n" + "\n" + " public static void main(final String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "\n" + "}" }, "SUCCESS"); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145 public void test051() { this.runConformTest( new String[] { "X.java", "import java.io.File;\n" + "import java.io.IOException;\n" + "import java.util.List;\n" + "\n" + "public class X {\n" + "\n" + " public static final List<File> copyDir(int j, List<File> lf,\n" + " final boolean returnSrc, final File[] fa) throws IOException {\n" + " if (lf == null)\n" + " lf = null;\n" + " for (int i = 0, max = fa.length; i < max; i++) {\n" + " final File f = fa[i];\n" + " final File right = new File(f.getName());\n" + " if (f.isDirectory()) {\n" + " } else {\n" + " lf.add(returnSrc ? f : right);\n" + " }\n" + " }\n" + " return lf;\n" + " }\n" + "\n" + " public static void main(final String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "\n" + "}" }, "SUCCESS"); } public void test052() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " X(int i) {}\n" + " void foo() {}\n" + " public static void main(String[] args) {\n" + " new X(args.length == 2 ? 1 : 2).foo();\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // 352665 public void test053() { Map customOptions = getCompilerOptions(); customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE); customOptions.put(JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, JavaCore.IGNORE); this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " static {\n" + " for(int i = 0; i < 10; i++){\n" + " A a = new A();\n" + " a.foo();\n" + " }\n" + " }\n" + " private class A {\n" + " private A() {\n" + " }\n" + " void foo() {}\n" + " }\n" + "}", }, "----------\n" + "1. ERROR in X.java (at line 4)\n" + " A a = new A();\n" + " ^^^^^^^\n" + "No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instance of type X (e.g. x.new A() where x is an instance of X).\n" + "----------\n", null, true, customOptions); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=354052 public void test054() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + "public static void foo() {\n" + " X z;\n" + " while ((z = getObject()) != null) {\n" + " z.bar();\n" + " }\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + " public void bar() {}\n" + " public static X getObject() {\n" + " return null;\n" + " }\n" + " public static void main(String[] args) {\n"+ " new X().foo();\n"+ " }\n"+ "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495 public void testBug359495a() throws Exception { this.runConformTest( new String[] { "X.java", "import java.util.List;\n" + "import java.util.concurrent.locks.Lock;\n" + "import java.util.Arrays;\n" + "import java.util.concurrent.locks.ReentrantLock;\n" + "public class X {\n" + " public static void main(String[] args) {\n" + " final Lock lock = new ReentrantLock();\n" + " final List<String> strings = Arrays.asList(args);\n" + " lock.lock();\n" + " try{\n" + " for (final String string:strings){\n" + " return;\n" + " }\n" + " return;\n" + " } finally {\n" + " lock.unlock();\n" + " }" + " }\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 6\n" + " public static void main(java.lang.String[] args);\n" + " 0 new java.util.concurrent.locks.ReentrantLock [16]\n" + " 3 dup\n" + " 4 invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" + " 7 astore_1 [lock]\n" + " 8 aload_0 [args]\n" + " 9 invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" + " 12 astore_2 [strings]\n" + " 13 aload_1 [lock]\n" + " 14 invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" + " 19 aload_2 [strings]\n" + " 20 invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" + " 25 astore 4\n" + " 27 aload 4\n" + " 29 invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" + " 34 ifeq 55\n" + " 37 aload 4\n" + " 39 invokeinterface java.util.Iterator.next() : java.lang.Object [42] [nargs: 1]\n" + " 44 checkcast java.lang.String [46]\n" + " 47 astore_3 [string]\n" + " 48 aload_1 [lock]\n" + " 49 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + " 54 return\n" + " 55 aload_1 [lock]\n" + " 56 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + " 61 return\n" + " 62 astore 5\n" + " 64 aload_1 [lock]\n" + " 65 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + " 70 aload 5\n" + " 72 athrow\n" + " Exception Table:\n" + " [pc: 19, pc: 48] -> 62 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 7]\n" + " [pc: 8, line: 8]\n" + " [pc: 13, line: 9]\n" + " [pc: 19, line: 11]\n" + " [pc: 48, line: 16]\n" + " [pc: 54, line: 12]\n" + " [pc: 55, line: 16]\n" + " [pc: 61, line: 14]\n" + " [pc: 62, line: 15]\n" + " [pc: 64, line: 16]\n" + " [pc: 70, line: 17]\n" + " Local variable table:\n" + " [pc: 0, pc: 73] local: args index: 0 type: java.lang.String[]\n" + " [pc: 8, pc: 73] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" + " [pc: 13, pc: 73] local: strings index: 2 type: java.util.List\n" + " [pc: 48, pc: 55] local: string index: 3 type: java.lang.String\n" + " Local variable type table:\n" + " [pc: 13, pc: 73] local: strings index: 2 type: java.util.List<java.lang.String>\n" + " Stack map table: number of frames 2\n" + " [pc: 55, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" + " [pc: 62, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" ; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495 public void testBug359495b() throws Exception { this.runConformTest( new String[] { "X.java", "import java.util.List;\n" + "import java.util.Iterator;\n" + "import java.util.concurrent.locks.Lock;\n" + "import java.util.Arrays;\n" + "import java.util.concurrent.locks.ReentrantLock;\n" + "public class X {\n" + " public static void main(String[] args) {\n" + " final Lock lock = new ReentrantLock();\n" + " final List<String> strings = Arrays.asList(args);\n" + " lock.lock();\n" + " try{\n" + " for (Iterator i = strings.iterator(); i.hasNext();){\n" + " return;\n" + " }\n" + " return;\n" + " } finally {\n" + " lock.unlock();\n" + " }" + " }\n" + "}", }, ""); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ([Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 5\n" + " public static void main(java.lang.String[] args);\n" + " 0 new java.util.concurrent.locks.ReentrantLock [16]\n" + " 3 dup\n" + " 4 invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" + " 7 astore_1 [lock]\n" + " 8 aload_0 [args]\n" + " 9 invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" + " 12 astore_2 [strings]\n" + " 13 aload_1 [lock]\n" + " 14 invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" + " 19 aload_2 [strings]\n" + " 20 invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" + " 25 astore_3 [i]\n" + " 26 aload_3 [i]\n" + " 27 invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" + " 32 ifeq 42\n" + " 35 aload_1 [lock]\n" + " 36 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + " 41 return\n" + " 42 aload_1 [lock]\n" + " 43 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + " 48 return\n" + " 49 astore 4\n" + " 51 aload_1 [lock]\n" + " 52 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + " 57 aload 4\n" + " 59 athrow\n" + " Exception Table:\n" + " [pc: 19, pc: 35] -> 49 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 8]\n" + " [pc: 8, line: 9]\n" + " [pc: 13, line: 10]\n" + " [pc: 19, line: 12]\n" + " [pc: 35, line: 17]\n" + " [pc: 41, line: 13]\n" + " [pc: 42, line: 17]\n" + " [pc: 48, line: 15]\n" + " [pc: 49, line: 16]\n" + " [pc: 51, line: 17]\n" + " [pc: 57, line: 18]\n" + " Local variable table:\n" + " [pc: 0, pc: 60] local: args index: 0 type: java.lang.String[]\n" + " [pc: 8, pc: 60] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" + " [pc: 13, pc: 60] local: strings index: 2 type: java.util.List\n" + " [pc: 26, pc: 42] local: i index: 3 type: java.util.Iterator\n" + " Local variable type table:\n" + " [pc: 13, pc: 60] local: strings index: 2 type: java.util.List<java.lang.String>\n" + " Stack map table: number of frames 2\n" + " [pc: 42, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" + " [pc: 49, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591 public void test055() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " testError(3, 4, \"d\");\n" + " }\n" + " public static void testError(Number n0, Number n1, String refValue) {\n" + " Number result = refValue.equals(\"ttt\") ? n0 : (n1 == null ? null : n1.intValue());\n" + " System.out.println(String.valueOf(result));\n" + " }\n" + "}", }, "4"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #27 (Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/String;)V\n" + " // Stack: 2, Locals: 4\n" + " public static void testError(java.lang.Number n0, java.lang.Number n1, java.lang.String refValue);\n" + " 0 aload_2 [refValue]\n" + " 1 ldc <String \"ttt\"> [30]\n" + " 3 invokevirtual java.lang.String.equals(java.lang.Object) : boolean [32]\n" + " 6 ifeq 13\n" + " 9 aload_0 [n0]\n" + " 10 goto 28\n" + " 13 aload_1 [n1]\n" + " 14 ifnonnull 21\n" + " 17 aconst_null\n" + " 18 goto 28\n" + " 21 aload_1 [n1]\n" + " 22 invokevirtual java.lang.Number.intValue() : int [38]\n" + " 25 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [16]\n" + " 28 astore_3 [result]\n" + " 29 getstatic java.lang.System.out : java.io.PrintStream [44]\n" + " 32 aload_3 [result]\n" + " 33 invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [50]\n" + " 36 invokevirtual java.io.PrintStream.println(java.lang.String) : void [53]\n" + " 39 return\n" + " Line numbers:\n" + " [pc: 0, line: 6]\n" + " [pc: 29, line: 7]\n" + " [pc: 39, line: 8]\n" + " Local variable table:\n" + " [pc: 0, pc: 40] local: n0 index: 0 type: java.lang.Number\n" + " [pc: 0, pc: 40] local: n1 index: 1 type: java.lang.Number\n" + " [pc: 0, pc: 40] local: refValue index: 2 type: java.lang.String\n" + " [pc: 29, pc: 40] local: result index: 3 type: java.lang.Number\n" + " Stack map table: number of frames 3\n" + " [pc: 13, same]\n" + " [pc: 21, same]\n" + " [pc: 28, same_locals_1_stack_item, stack: {java.lang.Number}]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } public void test055a() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public static void main(String[] args) {\n" + " Object o = args != null ? args : (args == null ? null : args.length);\n" + " }\n" + "}\n", }, ""); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=366999 public void test056() throws Exception { if (this.complianceLevel < ClassFileConstants.JDK1_7) return; this.runConformTest( new String[] { "X.java", "import java.io.BufferedReader;\n" + "import java.io.Closeable;\n" + "import java.io.File;\n" + "import java.io.FileReader;\n" + "import java.io.IOException;\n" + "\n" + "public class X {\n" + "\n" + " static class C implements Closeable {\n" + " @Override\n" + " public void close() throws IOException {\n" + " //\n" + " }\n" + " }\n" + "\n" + " int run() throws IOException {\n" + " int lcnt = 0;\n" + " try (C c = new C();) {\n" + " try (final BufferedReader br = new BufferedReader(new FileReader(\n" + " new File(\"logging.properties\")))) {\n" + " String s = null;\n" + " while ((s = br.readLine()) != null)\n" + " lcnt++;\n" + " return lcnt;\n" + " }\n" + " } finally {\n" + " System.out.println(\"read \" + lcnt + \" lines\");\n" + " }\n" + " }\n" + "\n" + " public static void main(final String[] args) throws IOException {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test057() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " for (;;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test058() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " for (;true;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test059() throws Exception { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " for (;false;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "----------\n" + "1. WARNING in X.java (at line 4)\n" + " label1: do {\n" + " ^^^^^^\n" + "The label label1 is never explicitly referenced\n" + "----------\n" + "2. ERROR in X.java (at line 5)\n" + " for (;false;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + "Unreachable code\n" + "----------\n" + "3. ERROR in X.java (at line 10)\n" + " } while (s != null);\n" + " ^\n" + "The local variable s may not have been initialized\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test060() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " for (; 5 < 10;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test061() throws Exception { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " int five = 5, ten = 10;\n" + " String s;\n" + " label1: do {\n" + " for (; five < ten;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "----------\n" + "1. WARNING in X.java (at line 9)\n" + " continue label1;\n" + " ^^^^^^^^^^^^^^^^\n" + "Dead code\n" + "----------\n" + "2. ERROR in X.java (at line 11)\n" + " } while (s != null);\n" + " ^\n" + "The local variable s may not have been initialized\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test062() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " final int five = 5, ten = 10;\n" + " String s;\n" + " label1: do {\n" + " for (; five < ten;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test063() throws Exception { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " final int five = 5, ten = 10;\n" + " String s;\n" + " label1: do {\n" + " for (; five > ten;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "----------\n" + "1. WARNING in X.java (at line 5)\n" + " label1: do {\n" + " ^^^^^^\n" + "The label label1 is never explicitly referenced\n" + "----------\n" + "2. ERROR in X.java (at line 6)\n" + " for (; five > ten;) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + "Unreachable code\n" + "----------\n" + "3. ERROR in X.java (at line 11)\n" + " } while (s != null);\n" + " ^\n" + "The local variable s may not have been initialized\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test064() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " while (true) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n", }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test065() throws Exception { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " while (false) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "----------\n" + "1. WARNING in X.java (at line 4)\n" + " label1: do {\n" + " ^^^^^^\n" + "The label label1 is never explicitly referenced\n" + "----------\n" + "2. ERROR in X.java (at line 5)\n" + " while (false) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + "Unreachable code\n" + "----------\n" + "3. ERROR in X.java (at line 10)\n" + " } while (s != null);\n" + " ^\n" + "The local variable s may not have been initialized\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test066() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " String s;\n" + " label1: do {\n" + " while(5 < 10) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test067() throws Exception { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " int five = 5, ten = 10;\n" + " String s;\n" + " label1: do {\n" + " while (five < ten) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "----------\n" + "1. WARNING in X.java (at line 9)\n" + " continue label1;\n" + " ^^^^^^^^^^^^^^^^\n" + "Dead code\n" + "----------\n" + "2. ERROR in X.java (at line 11)\n" + " } while (s != null);\n" + " ^\n" + "The local variable s may not have been initialized\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test068() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " final int five = 5, ten = 10;\n" + " String s;\n" + " label1: do {\n" + " while (five < ten) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test069() throws Exception { this.runNegativeTest( new String[] { "X.java", "public class X {\n" + " public void run() {\n" + " final int five = 5, ten = 10;\n" + " String s;\n" + " label1: do {\n" + " while (five > ten) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " } while (s != null);\n" + "}\n" + " public static void main(String [] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "----------\n" + "1. WARNING in X.java (at line 5)\n" + " label1: do {\n" + " ^^^^^^\n" + "The label label1 is never explicitly referenced\n" + "----------\n" + "2. ERROR in X.java (at line 6)\n" + " while (five > ten) {\n" + " s = \"\";\n" + " if (s == null) \n" + " continue label1;\n" + " }\n" + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + "Unreachable code\n" + "----------\n" + "3. ERROR in X.java (at line 11)\n" + " } while (s != null);\n" + " ^\n" + "The local variable s may not have been initialized\n" + "----------\n"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 public void test070() throws Exception { this.runConformTest( new String[] { "X.java", "import java.util.ArrayList;\n" + "import java.util.Arrays;\n" + "import java.util.Iterator;\n" + "import java.util.List;\n" + "import java.util.Properties;\n" + "import org.w3c.dom.*;\n" + "public class X extends Object {\n" + " public static void main(String [] args) {\n" + " System.out.println (\"SUCCESS\");\n" + " }\n" + " private static class Handler extends Object {\n" + " public int getStuff() {\n" + " return 1;\n" + " }\n" + " public void handle(Element element) {\n" + " Properties properties = new Properties();\n" + " NamedNodeMap atts = element.getAttributes();\n" + " if (atts != null) {\n" + " for (int a = 0; a < atts.getLength(); a++) {\n" + " Node att = atts.item(a);\n" + " String name = att.getNodeName();\n" + " String value = att.getNodeValue();\n" + " if (\"foo\".equals(name)) {\n" + " name = value;\n" + " } else {\n" + " if (!\"bar\".equals(name))\n" + " continue;\n" + " name = value;\n" + " }\n" + " properties.put(name, value);\n" + " }\n" + " }\n" + " label0: do {\n" + " Node node;\n" + " String nodeName;\n" + " label1: do {\n" + " for (Iterator i = (new ArrayList(1)).iterator(); i\n" + " .hasNext(); members.add(equals(node))) {\n" + " node = (Node) i.next();\n" + " nodeName = \"\" + equals(node.getNodeName());\n" + " if (!\"foo\".equals(nodeName))\n" + " continue label1;\n" + " }\n" + " break label0;\n" + " } while (!\"bar\".equals(nodeName));\n" + " Iterator i = (new ArrayList(1)).iterator();\n" + " while (i.hasNext()) {\n" + " Node n = (Node) i.next();\n" + " String name = toString() + n.getNodeName();\n" + " if (\"wtf\".equals(name)) {\n" + " String propertyName = (toString() + n.getAttributes()\n" + " .getNamedItem(\"broken\")).trim();\n" + " String value = toString() + n;\n" + " properties.put(propertyName, value);\n" + " }\n" + " }\n" + " } while (true);\n" + " propertiesBuilder.equals(properties);\n" + " builder.equals(propertiesBuilder.hashCode());\n" + " builder.equals(members);\n" + " }\n" + " private final Object c;\n" + " private Object builder;\n" + " private List members;\n" + " private Object propertiesBuilder;\n" + " public Handler(Object c) {\n" + " this.c = c;\n" + " builder = Arrays.asList(Object.class);\n" + " builder.equals(\"foo\");\n" + " builder.equals(\"bar\");\n" + " members = new ArrayList();\n" + " propertiesBuilder = Arrays.asList(Object.class);\n" + " Object beanDefinition = propertiesBuilder.toString();\n" + " Object holder = new String(\"stirng\");\n" + " Arrays.asList(holder, c.toString());\n" + " }\n" + " }\n" + " public X() {\n" + " }\n" + " protected Object parseInternal(Element element, Object c) {\n" + " Handler h = new Handler(c);\n" + " h.handle(element);\n" + " return h.getStuff();\n" + " }\n" + "}\n" }, "SUCCESS"); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313 // Verify the generated code does not have same branch target for the 2 return statements public void testBug380313() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + "public void foo() throws Exception {\n" + " int i = 1;\n" + " try {\n" + " if (i == 1) {\n" + " int n = bar();\n" + " if (n == 35)\n" + " return;\n" + " } else {\n" + " throw new Exception();\n" + " }\n" + " if (i == 0)\n" + " return;\n" + " } finally {\n" + " bar();\n" + " }\n" + " }\n" + "\n" + " private int bar() {\n" + " return 0;\n" + " }\n" + "\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 2, Locals: 4\n" + " public void foo() throws java.lang.Exception;\n" + " 0 iconst_1\n" + " 1 istore_1 [i]\n" + " 2 iload_1 [i]\n" + " 3 iconst_1\n" + " 4 if_icmpne 24\n" + " 7 aload_0 [this]\n" + " 8 invokespecial X.bar() : int [18]\n" + " 11 istore_2 [n]\n" + " 12 iload_2 [n]\n" + " 13 bipush 35\n" + " 15 if_icmpne 32\n" + " 18 aload_0 [this]\n" + " 19 invokespecial X.bar() : int [18]\n" + " 22 pop\n" + " 23 return\n" + " 24 new java.lang.Exception [16]\n" + " 27 dup\n" + " 28 invokespecial java.lang.Exception() [22]\n" + " 31 athrow\n" + " 32 iload_1 [i]\n" + " 33 ifne 50\n" + " 36 aload_0 [this]\n" + " 37 invokespecial X.bar() : int [18]\n" + " 40 pop\n" + " 41 return\n" + " 42 astore_3\n" + " 43 aload_0 [this]\n" + " 44 invokespecial X.bar() : int [18]\n" + " 47 pop\n" + " 48 aload_3\n" + " 49 athrow\n" + " 50 aload_0 [this]\n" + " 51 invokespecial X.bar() : int [18]\n" + " 54 pop\n" + " 55 return\n" + " Exception Table:\n" + " [pc: 2, pc: 18] -> 42 when : any\n" + " [pc: 24, pc: 36] -> 42 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 2, line: 5]\n" + " [pc: 7, line: 6]\n" + " [pc: 12, line: 7]\n" + " [pc: 18, line: 15]\n" + " [pc: 23, line: 8]\n" + " [pc: 24, line: 10]\n" + " [pc: 32, line: 12]\n" + " [pc: 36, line: 15]\n" + " [pc: 41, line: 13]\n" + " [pc: 42, line: 14]\n" + " [pc: 43, line: 15]\n" + " [pc: 48, line: 16]\n" + " [pc: 50, line: 15]\n" + " [pc: 55, line: 17]\n" + " Local variable table:\n" + " [pc: 0, pc: 56] local: this index: 0 type: X\n" + " [pc: 2, pc: 56] local: i index: 1 type: int\n" + " [pc: 12, pc: 24] local: n index: 2 type: int\n" + " Stack map table: number of frames 4\n" + " [pc: 24, append: {int}]\n" + " [pc: 32, same]\n" + " [pc: 42, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 50, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313 // Verify the generated code does not have same branch target for the 2 return statements public void testBug380313b() throws Exception { if (this.complianceLevel < ClassFileConstants.JDK1_7) return; this.runConformTest( new String[] { "X.java", "import java.io.FileInputStream;\n" + "import java.io.IOException;\n" + "public class X {\n" + "public void foo() throws Exception {\n" + " int i = 1;\n" + " try {\n" + " try (FileInputStream fis = new FileInputStream(\"\")) {\n" + " if (i == 2)" + " return;\n" + " }\n" + " if (i == 35) \n" + " return;\n" + " } catch(IOException e) {\n" + " bar();\n" + " } finally {\n" + " bar();\n" + " }\n" + " }\n" + "\n" + " private int bar() {\n" + " return 0;\n" + " }\n" + "\n" + " public static void main(String[] args) {\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 3, Locals: 6\n" + " public void foo() throws java.lang.Exception;\n" + " 0 iconst_1\n" + " 1 istore_1 [i]\n" + " 2 aconst_null\n" + " 3 astore_2\n" + " 4 aconst_null\n" + " 5 astore_3\n" + " 6 new java.io.FileInputStream [18]\n" + " 9 dup\n" + " 10 ldc <String \"\"> [20]\n" + " 12 invokespecial java.io.FileInputStream(java.lang.String) [22]\n" + " 15 astore 4 [fis]\n" + " 17 iload_1 [i]\n" + " 18 iconst_2\n" + " 19 if_icmpne 38\n" + " 22 aload 4 [fis]\n" + " 24 ifnull 32\n" + " 27 aload 4 [fis]\n" + " 29 invokevirtual java.io.FileInputStream.close() : void [25]\n" + " 32 aload_0 [this]\n" + // return 1 " 33 invokespecial X.bar() : int [28]\n" + " 36 pop\n" + " 37 return\n" + " 38 aload 4 [fis]\n" + " 40 ifnull 86\n" + " 43 aload 4 [fis]\n" + " 45 invokevirtual java.io.FileInputStream.close() : void [25]\n" + " 48 goto 86\n" + " 51 astore_2\n" + " 52 aload 4 [fis]\n" + " 54 ifnull 62\n" + " 57 aload 4 [fis]\n" + " 59 invokevirtual java.io.FileInputStream.close() : void [25]\n" + " 62 aload_2\n" + " 63 athrow\n" + " 64 astore_3\n" + " 65 aload_2\n" + " 66 ifnonnull 74\n" + " 69 aload_3\n" + " 70 astore_2\n" + " 71 goto 84\n" + " 74 aload_2\n" + " 75 aload_3\n" + " 76 if_acmpeq 84\n" + " 79 aload_2\n" + " 80 aload_3\n" + " 81 invokevirtual java.lang.Throwable.addSuppressed(java.lang.Throwable) : void [32]\n" + " 84 aload_2\n" + " 85 athrow\n" + " 86 iload_1 [i]\n" + " 87 bipush 35\n" + " 89 if_icmpne 122\n" + " 92 aload_0 [this]\n" + // return 2 " 93 invokespecial X.bar() : int [28]\n" + " 96 pop\n" + " 97 return\n" + " 98 astore_2 [e]\n" + " 99 aload_0 [this]\n" + " 100 invokespecial X.bar() : int [28]\n" + " 103 pop\n" + " 104 aload_0 [this]\n" + " 105 invokespecial X.bar() : int [28]\n" + " 108 pop\n" + " 109 goto 127\n" + " 112 astore 5\n" + " 114 aload_0 [this]\n" + " 115 invokespecial X.bar() : int [28]\n" + " 118 pop\n" + " 119 aload 5\n" + " 121 athrow\n" + " 122 aload_0 [this]\n" + " 123 invokespecial X.bar() : int [28]\n" + " 126 pop\n" + " 127 return\n" + " Exception Table:\n" + " [pc: 17, pc: 22] -> 51 when : any\n" + " [pc: 32, pc: 38] -> 51 when : any\n" + " [pc: 6, pc: 64] -> 64 when : any\n" + " [pc: 2, pc: 32] -> 98 when : java.io.IOException\n" + " [pc: 38, pc: 92] -> 98 when : java.io.IOException\n" + " [pc: 2, pc: 32] -> 112 when : any\n" + " [pc: 38, pc: 92] -> 112 when : any\n" + " [pc: 98, pc: 104] -> 112 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 5]\n" + " [pc: 2, line: 7]\n" + " [pc: 17, line: 8]\n" + " [pc: 22, line: 9]\n" + " [pc: 32, line: 15]\n" + " [pc: 37, line: 8]\n" + " [pc: 38, line: 9]\n" + " [pc: 86, line: 10]\n" + " [pc: 92, line: 15]\n" + " [pc: 97, line: 11]\n" + " [pc: 98, line: 12]\n" + " [pc: 99, line: 13]\n" + " [pc: 104, line: 15]\n" + " [pc: 112, line: 14]\n" + " [pc: 114, line: 15]\n" + " [pc: 119, line: 16]\n" + " [pc: 122, line: 15]\n" + " [pc: 127, line: 17]\n" + " Local variable table:\n" + " [pc: 0, pc: 128] local: this index: 0 type: X\n" + " [pc: 2, pc: 128] local: i index: 1 type: int\n" + " [pc: 17, pc: 62] local: fis index: 4 type: java.io.FileInputStream\n" + " [pc: 99, pc: 104] local: e index: 2 type: java.io.IOException\n" + " Stack map table: number of frames 12\n" + " [pc: 32, full, stack: {}, locals: {X, int, java.lang.Throwable, java.lang.Throwable, java.io.FileInputStream}]\n" + " [pc: 38, same]\n" + " [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 62, chop 1 local(s)]\n" + " [pc: 64, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 74, same]\n" + " [pc: 84, same]\n" + " [pc: 86, chop 2 local(s)]\n" + " [pc: 98, same_locals_1_stack_item, stack: {java.io.IOException}]\n" + " [pc: 112, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 122, same]\n" + " [pc: 127, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=380927 // Verify the reduced range of locals. public void testBug380927() throws Exception { this.runConformTest( new String[] { "X.java", "public class X {\n" + " public final static Object f() {\n" + " final Object a = null;\n" + " Object b;\n" + " label: do {\n" + " switch (0) {\n" + " case 1: {\n" + " b = a;\n" + " }\n" + " break;\n" + " default:\n" + " break label;\n" + " }\n" + " } while (true);\n" + " return a;\n" + " }\n" + " public static void main(final String[] args) {\n" + " f();\n" + " System.out.println(\"SUCCESS\");\n" + " }\n" + "}\n" }, "SUCCESS"); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 ()Ljava/lang/Object;\n" + " // Stack: 1, Locals: 2\n" + " public static final java.lang.Object f();\n" + " 0 aconst_null\n" + " 1 astore_0 [a]\n" + " 2 iconst_0\n" + " 3 tableswitch default: 25\n" + " case 1: 20\n" + " 20 aload_0 [a]\n" + " 21 astore_1 [b]\n" + " 22 goto 2\n" + " 25 aload_0 [a]\n" + " 26 areturn\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 2, line: 6]\n" + " [pc: 20, line: 8]\n" + " [pc: 22, line: 10]\n" + " [pc: 25, line: 15]\n" + " Local variable table:\n" + " [pc: 2, pc: 27] local: a index: 0 type: java.lang.Object\n" + " [pc: 22, pc: 25] local: b index: 1 type: java.lang.Object\n" + " Stack map table: number of frames 3\n" + " [pc: 2, append: {java.lang.Object}]\n" + " [pc: 20, same]\n" + " [pc: 25, same]\n" + " \n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c1 public void test385593_1() throws Exception { this.runConformTest( new String[] { "stackmap/StackMapTableFormatError.java", "package stackmap;\n" + "\n" + "import java.util.Collection;\n" + "import java.util.Collections;\n" + "\n" + "/**\n" + " * If compiled with Eclipse (compiler target >= 1.6) this snippet causes the\n" + " * error \"java.lang.ClassFormatError: StackMapTable format error: bad\n" + " * verification type\" when executed with JaCoCo code coverage. JaCoCo seems to\n" + " * get confused by unexpected stackmap frames generated by ECJ.\n" + " */\n" + "public class StackMapTableFormatError {\n" + "\n" + " public static Object exec(Collection<Object> set, Object a,\n" + " boolean b) {\n" + " for (Object e : set) {\n" + " if (a != null && (e == null || b)) {\n" + " continue;\n" + " }\n" + " return null;\n" + " }\n" + " return null;\n" + " }\n" + " \n" + " public static void main(String[] args) {\n" + " exec(Collections.emptySet(), null, false);\n" + " }\n" + "\n" + "}\n" }); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"stackmap"+File.separator+"StackMapTableFormatError.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #15 (Ljava/util/Collection;Ljava/lang/Object;Z)Ljava/lang/Object;\n" + " // Signature: (Ljava/util/Collection<Ljava/lang/Object;>;Ljava/lang/Object;Z)Ljava/lang/Object;\n" + " // Stack: 1, Locals: 5\n" + " public static java.lang.Object exec(java.util.Collection set, java.lang.Object a, boolean b);\n" + " 0 aload_0 [set]\n" + " 1 invokeinterface java.util.Collection.iterator() : java.util.Iterator [18] [nargs: 1]\n" + " 6 astore 4\n" + " 8 goto 36\n" + " 11 aload 4\n" + " 13 invokeinterface java.util.Iterator.next() : java.lang.Object [24] [nargs: 1]\n" + " 18 astore_3 [e]\n" + " 19 aload_1 [a]\n" + " 20 ifnull 34\n" + " 23 aload_3 [e]\n" + " 24 ifnull 36\n" + " 27 iload_2 [b]\n" + " 28 ifeq 34\n" + " 31 goto 36\n" + " 34 aconst_null\n" + " 35 areturn\n" + " 36 aload 4\n" + " 38 invokeinterface java.util.Iterator.hasNext() : boolean [30] [nargs: 1]\n" + " 43 ifne 11\n" + " 46 aconst_null\n" + " 47 areturn\n" + " Line numbers:\n" + " [pc: 0, line: 16]\n" + " [pc: 19, line: 17]\n" + " [pc: 31, line: 18]\n" + " [pc: 34, line: 20]\n" + " [pc: 36, line: 16]\n" + " [pc: 46, line: 22]\n" + " Local variable table:\n" + " [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection\n" + " [pc: 0, pc: 48] local: a index: 1 type: java.lang.Object\n" + " [pc: 0, pc: 48] local: b index: 2 type: boolean\n" + " [pc: 19, pc: 36] local: e index: 3 type: java.lang.Object\n" + " Local variable type table:\n" + " [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection<java.lang.Object>\n" + " Stack map table: number of frames 3\n" + " [pc: 11, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]\n" + " [pc: 34, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, java.lang.Object, java.util.Iterator}]\n" + " [pc: 36, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c11 public void test385593_2() throws Exception { this.runConformTest( new String[] { "snippet/X.java", "package snippet;\n" + "\n" + "\n" + "public class X { \n" + " private void foo(boolean delete) { \n" + " \n" + " String s = bar(); \n" + " StringBuffer buffer =new StringBuffer(); \n" + " \n" + " try { \n" + " \n" + " String[] datas = new String[] { \"\" }; \n" + " Object[] data= new Object[] { s }; \n" + " try { \n" + " buffer.append(datas).append(data); \n" + " } catch (Exception e) { \n" + " if (e != null) \n" + " throw e; \n" + " return; \n" + " } \n" + " \n" + " if (delete) \n" + " buffer.delete(0, buffer.length()); \n" + " \n" + " } catch (Exception x) { \n" + " } finally { \n" + " buffer = null; \n" + " } \n" + " } \n" + " \n" + " String bar() { \n" + " return \"\"; \n" + " } \n" + " \n" + " public static void main(String[] args) { \n" + " new X().foo(false); \n" + " System.out.println(\"SUCCESS\"); \n" + " } \n" + "}\n" }); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"snippet"+File.separator+"X.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = "Stack map table: number of frames 7\n" + " [pc: 49, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer, java.lang.String[], java.lang.Object[]}]\n" + " [pc: 59, append: {java.lang.Exception}]\n" + " [pc: 62, chop 1 local(s)]\n" + " [pc: 79, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer}]\n" + " [pc: 86, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + " [pc: 93, same]\n" + " [pc: 95, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // from https://bugs.eclipse.org/bugs/show_bug.cgi?id=394718 public void test394718() throws Exception { this.runConformTest( new String[] { "X.java", "public class X\n" + "{\n" + " public static Boolean test() throws Exception\n" + " {\n" + " try\n" + " {\n" + " for (int i = 0; i < 1; i++)\n" + " {\n" + " long status = System.currentTimeMillis();\n" + " if (status < 0)\n" + " return false;\n" + " if (status == 1)\n" + " return false;\n" + " }\n" + " \n" + " return false;\n" + " }\n" + " finally\n" + " {\n" + " System.currentTimeMillis();\n" + " }\n" + " }\n" + " \n" + " public static void main(String[] args) throws Exception\n" + " {\n" + " System.out.print(\"Starting\");\n" + " test();\n" + " System.out.println(\"Done\");\n" + " }\n" + "}" }, "StartingDone"); } // https://bugs.eclipse.org/412203 public void testBug412203_a() throws Exception { if (this.complianceLevel < ClassFileConstants.JDK1_7) return; // using <> Map options = getCompilerOptions(); options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED); options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR); options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR); options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING); options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED); this.runConformTest( new String[] { "X2.java", "import java.util.*;\n" + "\n" + "import org.eclipse.jdt.annotation.NonNullByDefault;\n" + "\n" + "class Y {\n" + " public Y() { }\n" + "}\n" + "\n" + "@NonNullByDefault\n" + "abstract class X1 {\n" + "\n" + " private Object a;\n" + " private Object b;\n" + " private Object c;\n" + " private Object d;\n" + " private Object e;\n" + " private Object f;\n" + "\n" + " protected Object name;\n" + "\n" + " @SuppressWarnings(\"null\")\n" + " protected X1() {\n" + " super ();\n" + " }\n" + "\n" + "}\n" + "public class X2 extends X1 {\n" + "\n" + "\n" + " public static final int ID = 4711;\n" + "\n" + " private Object x;\n" + " private Object y;\n" + " private Object z;\n" + "\n" + " private Runnable runable = new Runnable () {\n" + " @Override\n" + " public void run () {\n" + " // whatever\n" + " }\n" + " };\n" + "\n" + " private void init () {\n" + " final Object selector = new Object ();\n" + " this.name = new Object ();\n" + " LinkedList<Character> invalidCharactersList = new LinkedList<> ();\n" + " char[] invalidCharacters = new char[invalidCharactersList.size ()];\n" + " for (int i = 0; i < invalidCharacters.length; i++) {\n" + " invalidCharacters[i] = invalidCharactersList.get (i).charValue ();\n" + " }\n" + " Y inputVerifier = new Y();\n" + " }\n" + "\n" + "}\n", }, "", getLibsWithNullAnnotations(ClassFileConstants.JDK1_7), true/*flush*/, null/*vmArgs*/, options, null/*requestor*/, true/*skipJavac*/); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X2.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #16 ()V\n" + " // Stack: 4, Locals: 5\n" + " private void init();\n" + " 0 new java.lang.Object [32]\n" + " 3 dup\n" + " 4 invokespecial java.lang.Object() [34]\n" + " 7 astore_1 [selector]\n" + " 8 aload_0 [this]\n" + " 9 new java.lang.Object [32]\n" + " 12 dup\n" + " 13 invokespecial java.lang.Object() [34]\n" + " 16 putfield X2.name : java.lang.Object [35]\n" + " 19 new java.util.LinkedList [38]\n" + " 22 dup\n" + " 23 invokespecial java.util.LinkedList() [40]\n" + " 26 astore_2 [invalidCharactersList]\n" + " 27 aload_2 [invalidCharactersList]\n" + " 28 invokevirtual java.util.LinkedList.size() : int [41]\n" + " 31 newarray char [5]\n" + " 33 astore_3 [invalidCharacters]\n" + " 34 iconst_0\n" + " 35 istore 4 [i]\n" + " 37 goto 59\n" + " 40 aload_3 [invalidCharacters]\n" + " 41 iload 4 [i]\n" + " 43 aload_2 [invalidCharactersList]\n" + " 44 iload 4 [i]\n" + " 46 invokevirtual java.util.LinkedList.get(int) : java.lang.Object [45]\n" + " 49 checkcast java.lang.Character [49]\n" + " 52 invokevirtual java.lang.Character.charValue() : char [51]\n" + " 55 castore\n" + " 56 iinc 4 1 [i]\n" + " 59 iload 4 [i]\n" + " 61 aload_3 [invalidCharacters]\n" + " 62 arraylength\n" + " 63 if_icmplt 40\n" + " 66 new Y [55]\n" + " 69 dup\n" + " 70 invokespecial Y() [57]\n" + " 73 astore 4 [inputVerifier]\n" + " 75 return\n" + " Line numbers:\n" + " [pc: 0, line: 44]\n" + " [pc: 8, line: 45]\n" + " [pc: 19, line: 46]\n" + " [pc: 27, line: 47]\n" + " [pc: 34, line: 48]\n" + " [pc: 40, line: 49]\n" + " [pc: 56, line: 48]\n" + " [pc: 66, line: 51]\n" + " [pc: 75, line: 52]\n" + " Local variable table:\n" + " [pc: 0, pc: 76] local: this index: 0 type: X2\n" + " [pc: 8, pc: 76] local: selector index: 1 type: java.lang.Object\n" + " [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList\n" + " [pc: 34, pc: 76] local: invalidCharacters index: 3 type: char[]\n" + " [pc: 37, pc: 66] local: i index: 4 type: int\n" + " [pc: 75, pc: 76] local: inputVerifier index: 4 type: Y\n" + " Local variable type table:\n" + " [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList<java.lang.Character>\n" + " Stack map table: number of frames 2\n" + " [pc: 40, full, stack: {}, locals: {X2, java.lang.Object, java.util.LinkedList, char[], int}]\n" + " [pc: 59, same]\n"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // https://bugs.eclipse.org/412203 // yet simplified version - using FieldReference public void testBug412203_b() throws Exception { Map options = getCompilerOptions(); options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED); options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR); options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR); options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING); options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED); this.runConformTest( new String[] { "X2.java", "import java.util.LinkedList;\n" + "\n" + "import org.eclipse.jdt.annotation.NonNull;\n" + "\n" + "abstract class X1 {\n" + " protected @NonNull Object name = new Object();\n" + "}\n" + "\n" + "public class X2 extends X1 {\n" + " void init () {\n" + " this.name = new Object ();\n" + " LinkedList<Character> l = new LinkedList<Character> ();\n" + " char[] cs = new char[l.size ()];\n" + " for (int i = 0; i < cs.length; i++) {\n" + " cs[i] = l.get (i).charValue ();\n" + " }\n" + " Object o2 = new Object();\n" + " }\n" + "}\n", }, "", getLibsWithNullAnnotations(ClassFileConstants.JDK1_7), true/*flush*/, null/*vmArgs*/, options, null/*requestor*/, true/*skipJavac*/); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X2.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 4, Locals: 4\n" + " void init();\n" + " 0 aload_0 [this]\n" + " 1 new java.lang.Object [15]\n" + " 4 dup\n" + " 5 invokespecial java.lang.Object() [17]\n" + " 8 putfield X2.name : java.lang.Object [18]\n" + " 11 new java.util.LinkedList [22]\n" + " 14 dup\n" + " 15 invokespecial java.util.LinkedList() [24]\n" + " 18 astore_1 [l]\n" + " 19 aload_1 [l]\n" + " 20 invokevirtual java.util.LinkedList.size() : int [25]\n" + " 23 newarray char [5]\n" + " 25 astore_2 [cs]\n" + " 26 iconst_0\n" + " 27 istore_3 [i]\n" + " 28 goto 48\n" + " 31 aload_2 [cs]\n" + " 32 iload_3 [i]\n" + " 33 aload_1 [l]\n" + " 34 iload_3 [i]\n" + " 35 invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" + " 38 checkcast java.lang.Character [33]\n" + " 41 invokevirtual java.lang.Character.charValue() : char [35]\n" + " 44 castore\n" + " 45 iinc 3 1 [i]\n" + " 48 iload_3 [i]\n" + " 49 aload_2 [cs]\n" + " 50 arraylength\n" + " 51 if_icmplt 31\n" + " 54 new java.lang.Object [15]\n" + " 57 dup\n" + " 58 invokespecial java.lang.Object() [17]\n" + " 61 astore_3 [o2]\n" + " 62 return\n" + " Line numbers:\n" + " [pc: 0, line: 11]\n" + " [pc: 11, line: 12]\n" + " [pc: 19, line: 13]\n" + " [pc: 26, line: 14]\n" + " [pc: 31, line: 15]\n" + " [pc: 45, line: 14]\n" + " [pc: 54, line: 17]\n" + " [pc: 62, line: 18]\n" + " Local variable table:\n" + " [pc: 0, pc: 63] local: this index: 0 type: X2\n" + " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" + " [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" + " [pc: 28, pc: 54] local: i index: 3 type: int\n" + " [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" + " Local variable type table:\n" + " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" + " Stack map table: number of frames 2\n" + " [pc: 31, append: {java.util.LinkedList, char[], int}]\n" + " [pc: 48, same]\n" + "}"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } // https://bugs.eclipse.org/412203 // yet simplified version - using SingleNameReference public void testBug412203_c() throws Exception { Map options = getCompilerOptions(); options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED); options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR); options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR); options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING); options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED); this.runConformTest( new String[] { "X2.java", "import java.util.LinkedList;\n" + "\n" + "import org.eclipse.jdt.annotation.NonNull;\n" + "\n" + "abstract class X1 {\n" + " protected @NonNull Object name = new Object();\n" + "}\n" + "\n" + "public class X2 extends X1 {\n" + " void init () {\n" + " name = new Object ();\n" + " LinkedList<Character> l = new LinkedList<Character> ();\n" + " char[] cs = new char[l.size ()];\n" + " for (int i = 0; i < cs.length; i++) {\n" + " cs[i] = l.get (i).charValue ();\n" + " }\n" + " Object o2 = new Object();\n" + " }\n" + "}\n", }, "", getLibsWithNullAnnotations(ClassFileConstants.JDK1_7), true/*flush*/, null/*vmArgs*/, options, null/*requestor*/, true/*skipJavac*/); ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X2.class")); String actualOutput = disassembler.disassemble( classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED); String expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 4, Locals: 4\n" + " void init();\n" + " 0 aload_0 [this]\n" + " 1 new java.lang.Object [15]\n" + " 4 dup\n" + " 5 invokespecial java.lang.Object() [17]\n" + " 8 putfield X2.name : java.lang.Object [18]\n" + " 11 new java.util.LinkedList [22]\n" + " 14 dup\n" + " 15 invokespecial java.util.LinkedList() [24]\n" + " 18 astore_1 [l]\n" + " 19 aload_1 [l]\n" + " 20 invokevirtual java.util.LinkedList.size() : int [25]\n" + " 23 newarray char [5]\n" + " 25 astore_2 [cs]\n" + " 26 iconst_0\n" + " 27 istore_3 [i]\n" + " 28 goto 48\n" + " 31 aload_2 [cs]\n" + " 32 iload_3 [i]\n" + " 33 aload_1 [l]\n" + " 34 iload_3 [i]\n" + " 35 invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" + " 38 checkcast java.lang.Character [33]\n" + " 41 invokevirtual java.lang.Character.charValue() : char [35]\n" + " 44 castore\n" + " 45 iinc 3 1 [i]\n" + " 48 iload_3 [i]\n" + " 49 aload_2 [cs]\n" + " 50 arraylength\n" + " 51 if_icmplt 31\n" + " 54 new java.lang.Object [15]\n" + " 57 dup\n" + " 58 invokespecial java.lang.Object() [17]\n" + " 61 astore_3 [o2]\n" + " 62 return\n" + " Line numbers:\n" + " [pc: 0, line: 11]\n" + " [pc: 11, line: 12]\n" + " [pc: 19, line: 13]\n" + " [pc: 26, line: 14]\n" + " [pc: 31, line: 15]\n" + " [pc: 45, line: 14]\n" + " [pc: 54, line: 17]\n" + " [pc: 62, line: 18]\n" + " Local variable table:\n" + " [pc: 0, pc: 63] local: this index: 0 type: X2\n" + " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" + " [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" + " [pc: 28, pc: 54] local: i index: 3 type: int\n" + " [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" + " Local variable type table:\n" + " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" + " Stack map table: number of frames 2\n" + " [pc: 31, append: {java.util.LinkedList, char[], int}]\n" + " [pc: 48, same]\n" + "}"; int index = actualOutput.indexOf(expectedOutput); if (index == -1 || expectedOutput.length() == 0) { System.out.println(Util.displayString(actualOutput, 2)); } if (index == -1) { assertEquals("Wrong contents", expectedOutput, actualOutput); } } }