1 /******************************************************************************* 2 * Copyright (c) 2006, 2018 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 * Stephan Herrmann - Contribution for 14 * bug 388800 - [1.8] adjust tests to 1.8 JRE 15 * Bug 412203 - [compiler] Internal compiler error: java.lang.IllegalArgumentException: info cannot be null 16 * Bug 400874 - [1.8][compiler] Inference infrastructure should evolve to meet JLS8 18.x (Part G of JSR335 spec) 17 *******************************************************************************/ 18 package org.eclipse.jdt.core.tests.compiler.regression; 19 20 import java.io.File; 21 import java.util.Map; 22 23 import junit.framework.Test; 24 25 import org.eclipse.jdt.core.JavaCore; 26 import org.eclipse.jdt.core.ToolFactory; 27 import org.eclipse.jdt.core.tests.util.Util; 28 import org.eclipse.jdt.core.util.ClassFileBytesDisassembler; 29 import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; 30 31 @SuppressWarnings({ "unchecked", "rawtypes" }) 32 public class StackMapAttributeTest extends AbstractRegressionTest { StackMapAttributeTest(String name)33 public StackMapAttributeTest(String name) { 34 super(name); 35 } 36 testClass()37 public static Class testClass() { 38 return StackMapAttributeTest.class; 39 } 40 41 // Use this static initializer to specify subset for tests 42 // All specified tests which does not belong to the class are skipped... 43 static { 44 // TESTS_PREFIX = "testBug95521"; 45 // TESTS_NAMES = new String[] { "testBug412076_" }; 46 // TESTS_NUMBERS = new int[] { 53 }; 47 // TESTS_RANGE = new int[] { 23 -1,}; 48 } suite()49 public static Test suite() { 50 return buildMinimalComplianceTestSuite(testClass(), F_1_6); 51 } test001()52 public void test001() throws Exception { 53 this.runConformTest( 54 new String[] { 55 "X.java", 56 "public class X {\n" + 57 " X() {}\n" + 58 " X(double i) {\n" + 59 " this(i > 0 ? null : new Object());\n" + 60 " try {\n" + 61 " foo(6, false);\n" + 62 " } catch(Exception e) {\n" + 63 " e.printStackTrace();\n" + 64 " }\n" + 65 " }\n" + 66 " X(Object o) {}\n" + 67 " int foo(int i, boolean b) {\n" + 68 " try {\n" + 69 " if (b) {\n" + 70 " return i;\n" + 71 " }\n" + 72 " return i + 1;\n" + 73 " } catch(Exception e) {\n" + 74 " return 5;\n" + 75 " }\n" + 76 " }\n" + 77 " public static void main(String[] args) {\n" + 78 " new X().foo(2, false);\n" + 79 " System.out.println(\"SUCCESS\");\n" + 80 " }\n" + 81 "}", 82 }, 83 "SUCCESS"); 84 85 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 86 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 87 String actualOutput = 88 disassembler.disassemble( 89 classFileBytes, 90 "\n", 91 ClassFileBytesDisassembler.DETAILED); 92 93 String expectedOutput = 94 " // Method descriptor #14 (D)V\n" + 95 " // Stack: 5, Locals: 4\n" + 96 " X(double i);\n" + 97 " 0 aload_0 [this]\n" + 98 " 1 dload_1 [i]\n" + 99 " 2 dconst_0\n" + 100 " 3 dcmpl\n" + 101 " 4 ifle 11\n" + 102 " 7 aconst_null\n" + 103 " 8 goto 18\n" + 104 " 11 new java.lang.Object [3]\n" + 105 " 14 dup\n" + 106 " 15 invokespecial java.lang.Object() [8]\n" + 107 " 18 invokespecial X(java.lang.Object) [15]\n" + 108 " 21 aload_0 [this]\n" + 109 " 22 bipush 6\n" + 110 " 24 iconst_0\n" + 111 " 25 invokevirtual X.foo(int, boolean) : int [18]\n" + 112 " 28 pop\n" + 113 " 29 goto 37\n" + 114 " 32 astore_3 [e]\n" + 115 " 33 aload_3 [e]\n" + 116 " 34 invokevirtual java.lang.Exception.printStackTrace() : void [22]\n" + 117 " 37 return\n" + 118 " Exception Table:\n" + 119 " [pc: 21, pc: 29] -> 32 when : java.lang.Exception\n" + 120 " Line numbers:\n" + 121 " [pc: 0, line: 4]\n" + 122 " [pc: 21, line: 6]\n" + 123 " [pc: 29, line: 7]\n" + 124 " [pc: 33, line: 8]\n" + 125 " [pc: 37, line: 10]\n" + 126 " Local variable table:\n" + 127 " [pc: 0, pc: 38] local: this index: 0 type: X\n" + 128 " [pc: 0, pc: 38] local: i index: 1 type: double\n" + 129 " [pc: 33, pc: 37] local: e index: 3 type: java.lang.Exception\n" + 130 " Stack map table: number of frames 4\n" + 131 " [pc: 11, same_locals_1_stack_item, stack: {uninitialized_this}]\n" + 132 " [pc: 18, full, stack: {uninitialized_this, java.lang.Object}, locals: {uninitialized_this, double}]\n" + 133 " [pc: 32, full, stack: {java.lang.Exception}, locals: {X, double}]\n" + 134 " [pc: 37, same]\n" + 135 " \n" + 136 " // Method descriptor #17 (Ljava/lang/Object;)V\n" + 137 " // Stack: 1, Locals: 2\n" + 138 " X(java.lang.Object o);\n" + 139 " 0 aload_0 [this]\n" + 140 " 1 invokespecial java.lang.Object() [8]\n" + 141 " 4 return\n" + 142 " Line numbers:\n" + 143 " [pc: 0, line: 11]\n" + 144 " Local variable table:\n" + 145 " [pc: 0, pc: 5] local: this index: 0 type: X\n" + 146 " [pc: 0, pc: 5] local: o index: 1 type: java.lang.Object\n" + 147 " \n" + 148 " // Method descriptor #21 (IZ)I\n" + 149 " // Stack: 2, Locals: 4\n" + 150 " int foo(int i, boolean b);\n" + 151 " 0 iload_2 [b]\n" + 152 " 1 ifeq 6\n" + 153 " 4 iload_1 [i]\n" + 154 " 5 ireturn\n" + 155 " 6 iload_1 [i]\n" + 156 " 7 iconst_1\n" + 157 " 8 iadd\n" + 158 " 9 ireturn\n" + 159 " 10 astore_3 [e]\n" + 160 " 11 iconst_5\n" + 161 " 12 ireturn\n" + 162 " Exception Table:\n" + 163 " [pc: 0, pc: 5] -> 10 when : java.lang.Exception\n" + 164 " [pc: 6, pc: 9] -> 10 when : java.lang.Exception\n" + 165 " Line numbers:\n" + 166 " [pc: 0, line: 14]\n" + 167 " [pc: 4, line: 15]\n" + 168 " [pc: 6, line: 17]\n" + 169 " [pc: 10, line: 18]\n" + 170 " [pc: 11, line: 19]\n" + 171 " Local variable table:\n" + 172 " [pc: 0, pc: 13] local: this index: 0 type: X\n" + 173 " [pc: 0, pc: 13] local: i index: 1 type: int\n" + 174 " [pc: 0, pc: 13] local: b index: 2 type: boolean\n" + 175 " [pc: 11, pc: 13] local: e index: 3 type: java.lang.Exception\n" + 176 " Stack map table: number of frames 2\n" + 177 " [pc: 6, same]\n" + 178 " [pc: 10, same_locals_1_stack_item, stack: {java.lang.Exception}]\n"; 179 180 int index = actualOutput.indexOf(expectedOutput); 181 if (index == -1 || expectedOutput.length() == 0) { 182 System.out.println(Util.displayString(actualOutput, 2)); 183 } 184 if (index == -1) { 185 assertEquals("Wrong contents", expectedOutput, actualOutput); 186 } 187 } test002()188 public void test002() throws Exception { 189 this.runConformTest( 190 new String[] { 191 "X.java", 192 "public class X {\n" + 193 " public static void foo(double d, boolean b) {\n" + 194 " double i;\n" + 195 " try {\n" + 196 " i = 0;\n" + 197 " i++;\n" + 198 " int j = (int) (i - 1);\n" + 199 " if (b) {\n" + 200 " double d1 = 0;\n" + 201 " if (!b) {\n" + 202 " d1 = 0;\n" + 203 " }\n" + 204 " double d2 = d + d1;\n" + 205 " }\n" + 206 " bar(j);\n" + 207 " } catch(NullPointerException e) {\n" + 208 " i = 2;\n" + 209 " } finally {\n" + 210 " i = 1;\n" + 211 " }\n" + 212 " long j = (long) (i + 1);\n" + 213 " int k = (int) j;\n" + 214 " k += j;\n" + 215 " }\n" + 216 " public static void bar(int i) {}\n" + 217 " public static void main(String[] args) {\n" + 218 " foo(0, true);\n" + 219 " System.out.println(\"SUCCESS\");\n" + 220 " }\n" + 221 "}", 222 }, 223 "SUCCESS"); 224 225 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 226 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 227 String actualOutput = 228 disassembler.disassemble( 229 classFileBytes, 230 "\n", 231 ClassFileBytesDisassembler.DETAILED); 232 233 String expectedOutput = 234 " // Method descriptor #15 (DZ)V\n" + 235 " // Stack: 4, Locals: 11\n" + 236 " public static void foo(double d, boolean b);\n" + 237 " 0 dconst_0\n" + 238 " 1 dstore_3 [i]\n" + 239 " 2 dload_3 [i]\n" + 240 " 3 dconst_1\n" + 241 " 4 dadd\n" + 242 " 5 dstore_3 [i]\n" + 243 " 6 dload_3 [i]\n" + 244 " 7 dconst_1\n" + 245 " 8 dsub\n" + 246 " 9 d2i\n" + 247 " 10 istore 5 [j]\n" + 248 " 12 iload_2 [b]\n" + 249 " 13 ifeq 32\n" + 250 " 16 dconst_0\n" + 251 " 17 dstore 6 [d1]\n" + 252 " 19 iload_2 [b]\n" + 253 " 20 ifne 26\n" + 254 " 23 dconst_0\n" + 255 " 24 dstore 6 [d1]\n" + 256 " 26 dload_0 [d]\n" + 257 " 27 dload 6 [d1]\n" + 258 " 29 dadd\n" + 259 " 30 dstore 8\n" + 260 " 32 iload 5 [j]\n" + 261 " 34 invokestatic X.bar(int) : void [16]\n" + 262 " 37 goto 58\n" + 263 " 40 astore 5 [e]\n" + 264 " 42 ldc2_w <Double 2.0> [20]\n" + 265 " 45 dstore_3 [i]\n" + 266 " 46 dconst_1\n" + 267 " 47 dstore_3 [i]\n" + 268 " 48 goto 60\n" + 269 " 51 astore 10\n" + 270 " 53 dconst_1\n" + 271 " 54 dstore_3 [i]\n" + 272 " 55 aload 10\n" + 273 " 57 athrow\n" + 274 " 58 dconst_1\n" + 275 " 59 dstore_3 [i]\n" + 276 " 60 dload_3 [i]\n" + 277 " 61 dconst_1\n" + 278 " 62 dadd\n" + 279 " 63 d2l\n" + 280 " 64 lstore 5 [j]\n" + 281 " 66 lload 5 [j]\n" + 282 " 68 l2i\n" + 283 " 69 istore 7 [k]\n" + 284 " 71 iload 7 [k]\n" + 285 " 73 i2l\n" + 286 " 74 lload 5 [j]\n" + 287 " 76 ladd\n" + 288 " 77 l2i\n" + 289 " 78 istore 7 [k]\n" + 290 " 80 return\n" + 291 " Exception Table:\n" + 292 " [pc: 0, pc: 37] -> 40 when : java.lang.NullPointerException\n" + 293 " [pc: 0, pc: 46] -> 51 when : any\n" + 294 " Line numbers:\n" + 295 " [pc: 0, line: 5]\n" + 296 " [pc: 2, line: 6]\n" + 297 " [pc: 6, line: 7]\n" + 298 " [pc: 12, line: 8]\n" + 299 " [pc: 16, line: 9]\n" + 300 " [pc: 19, line: 10]\n" + 301 " [pc: 23, line: 11]\n" + 302 " [pc: 26, line: 13]\n" + 303 " [pc: 32, line: 15]\n" + 304 " [pc: 37, line: 16]\n" + 305 " [pc: 42, line: 17]\n" + 306 " [pc: 46, line: 19]\n" + 307 " [pc: 51, line: 18]\n" + 308 " [pc: 53, line: 19]\n" + 309 " [pc: 55, line: 20]\n" + 310 " [pc: 58, line: 19]\n" + 311 " [pc: 60, line: 21]\n" + 312 " [pc: 66, line: 22]\n" + 313 " [pc: 71, line: 23]\n" + 314 " [pc: 80, line: 24]\n" + 315 " Local variable table:\n" + 316 " [pc: 0, pc: 81] local: d index: 0 type: double\n" + 317 " [pc: 0, pc: 81] local: b index: 2 type: boolean\n" + 318 " [pc: 2, pc: 40] local: i index: 3 type: double\n" + 319 " [pc: 46, pc: 51] local: i index: 3 type: double\n" + 320 " [pc: 55, pc: 81] local: i index: 3 type: double\n" + 321 " [pc: 12, pc: 37] local: j index: 5 type: int\n" + 322 " [pc: 19, pc: 32] local: d1 index: 6 type: double\n" + 323 " [pc: 42, pc: 46] local: e index: 5 type: java.lang.NullPointerException\n" + 324 " [pc: 66, pc: 81] local: j index: 5 type: long\n" + 325 " [pc: 71, pc: 81] local: k index: 7 type: int\n" + 326 " Stack map table: number of frames 6\n" + 327 " [pc: 26, append: {double, int, double}]\n" + 328 " [pc: 32, chop 1 local(s)]\n" + 329 " [pc: 40, full, stack: {java.lang.NullPointerException}, locals: {double, int}]\n" + 330 " [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 331 " [pc: 58, append: {double}]\n" + 332 " [pc: 60, same]\n"; 333 334 int index = actualOutput.indexOf(expectedOutput); 335 if (index == -1 || expectedOutput.length() == 0) { 336 System.out.println(Util.displayString(actualOutput, 2)); 337 } 338 if (index == -1) { 339 assertEquals("Wrong contents", expectedOutput, actualOutput); 340 } 341 } test003()342 public void test003() throws Exception { 343 this.runConformTest( 344 new String[] { 345 "X.java", 346 "public class X {\n" + 347 " public static void foo(boolean b) {\n" + 348 " int i = 0;\n" + 349 " try {\n" + 350 " System.out.println(\"FINALLY\");\n" + 351 " i++;\n" + 352 " int j = i -1;\n" + 353 " bar(j);\n" + 354 " } catch(NullPointerException e) {\n" + 355 " e.printStackTrace();\n" + 356 " } finally {\n" + 357 " System.out.println(\"FINALLY\");\n" + 358 " }\n" + 359 " }\n" + 360 " public static void bar(int i) {}\n" + 361 " \n" + 362 " public static void main(String[] args) {\n" + 363 " foo(true);\n" + 364 " System.out.println(\"SUCCESS\");\n" + 365 " }\n" + 366 "}", 367 }, 368 "FINALLY\n" + 369 "FINALLY\n" + 370 "SUCCESS"); 371 372 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 373 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 374 String actualOutput = 375 disassembler.disassemble( 376 classFileBytes, 377 "\n", 378 ClassFileBytesDisassembler.DETAILED); 379 380 String expectedOutput = 381 " // Method descriptor #15 (Z)V\n" + 382 " // Stack: 2, Locals: 4\n" + 383 " public static void foo(boolean b);\n" + 384 " 0 iconst_0\n" + 385 " 1 istore_1 [i]\n" + 386 " 2 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 387 " 5 ldc <String \"FINALLY\"> [22]\n" + 388 " 7 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 389 " 10 iinc 1 1 [i]\n" + 390 " 13 iload_1 [i]\n" + 391 " 14 iconst_1\n" + 392 " 15 isub\n" + 393 " 16 istore_2 [j]\n" + 394 " 17 iload_2 [j]\n" + 395 " 18 invokestatic X.bar(int) : void [30]\n" + 396 " 21 goto 51\n" + 397 " 24 astore_2 [e]\n" + 398 " 25 aload_2 [e]\n" + 399 " 26 invokevirtual java.lang.NullPointerException.printStackTrace() : void [34]\n" + 400 " 29 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 401 " 32 ldc <String \"FINALLY\"> [22]\n" + 402 " 34 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 403 " 37 goto 59\n" + 404 " 40 astore_3\n" + 405 " 41 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 406 " 44 ldc <String \"FINALLY\"> [22]\n" + 407 " 46 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 408 " 49 aload_3\n" + 409 " 50 athrow\n" + 410 " 51 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 411 " 54 ldc <String \"FINALLY\"> [22]\n" + 412 " 56 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 413 " 59 return\n" + 414 " Exception Table:\n" + 415 " [pc: 2, pc: 21] -> 24 when : java.lang.NullPointerException\n" + 416 " [pc: 2, pc: 29] -> 40 when : any\n" + 417 " Line numbers:\n" + 418 " [pc: 0, line: 3]\n" + 419 " [pc: 2, line: 5]\n" + 420 " [pc: 10, line: 6]\n" + 421 " [pc: 13, line: 7]\n" + 422 " [pc: 17, line: 8]\n" + 423 " [pc: 21, line: 9]\n" + 424 " [pc: 25, line: 10]\n" + 425 " [pc: 29, line: 12]\n" + 426 " [pc: 40, line: 11]\n" + 427 " [pc: 41, line: 12]\n" + 428 " [pc: 49, line: 13]\n" + 429 " [pc: 51, line: 12]\n" + 430 " [pc: 59, line: 14]\n" + 431 " Local variable table:\n" + 432 " [pc: 0, pc: 60] local: b index: 0 type: boolean\n" + 433 " [pc: 2, pc: 60] local: i index: 1 type: int\n" + 434 " [pc: 17, pc: 21] local: j index: 2 type: int\n" + 435 " [pc: 25, pc: 29] local: e index: 2 type: java.lang.NullPointerException\n" + 436 " Stack map table: number of frames 4\n" + 437 " [pc: 24, full, stack: {java.lang.NullPointerException}, locals: {int, int}]\n" + 438 " [pc: 40, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 439 " [pc: 51, same]\n" + 440 " [pc: 59, same]\n"; 441 442 int index = actualOutput.indexOf(expectedOutput); 443 if (index == -1 || expectedOutput.length() == 0) { 444 System.out.println(Util.displayString(actualOutput, 2)); 445 } 446 if (index == -1) { 447 assertEquals("Wrong contents", expectedOutput, actualOutput); 448 } 449 } 450 test004()451 public void test004() throws Exception { 452 this.runConformTest( 453 new String[] { 454 "X.java", 455 "public class X {\n" + 456 " public static void foo(boolean b) {\n" + 457 " C c;\n" + 458 " if (b) {\n" + 459 " c = new C1();\n" + 460 " } else {\n" + 461 " c = new C2();\n" + 462 " }\n" + 463 " System.out.println();\n" + 464 " }\n" + 465 " public static void main(String[] args) {\n" + 466 " foo(true);\n" + 467 " System.out.println(\"SUCCESS\");\n" + 468 " }\n" + 469 "}\n" + 470 "class C {\n" + 471 " void foo() {}\n" + 472 "}\n" + 473 "class C1 extends C {\n" + 474 "}\n" + 475 "class C2 extends C {\n" + 476 "}", 477 }, 478 "SUCCESS"); 479 480 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 481 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 482 String actualOutput = 483 disassembler.disassemble( 484 classFileBytes, 485 "\n", 486 ClassFileBytesDisassembler.DETAILED); 487 488 String expectedOutput = 489 " // Method descriptor #15 (Z)V\n" + 490 " // Stack: 2, Locals: 2\n" + 491 " public static void foo(boolean b);\n" + 492 " 0 iload_0 [b]\n" + 493 " 1 ifeq 15\n" + 494 " 4 new C1 [16]\n" + 495 " 7 dup\n" + 496 " 8 invokespecial C1() [18]\n" + 497 " 11 astore_1 [c]\n" + 498 " 12 goto 23\n" + 499 " 15 new C2 [19]\n" + 500 " 18 dup\n" + 501 " 19 invokespecial C2() [21]\n" + 502 " 22 astore_1 [c]\n" + 503 " 23 getstatic java.lang.System.out : java.io.PrintStream [22]\n" + 504 " 26 invokevirtual java.io.PrintStream.println() : void [28]\n" + 505 " 29 return\n" + 506 " Line numbers:\n" + 507 " [pc: 0, line: 4]\n" + 508 " [pc: 4, line: 5]\n" + 509 " [pc: 12, line: 6]\n" + 510 " [pc: 15, line: 7]\n" + 511 " [pc: 23, line: 9]\n" + 512 " [pc: 29, line: 10]\n" + 513 " Local variable table:\n" + 514 " [pc: 0, pc: 30] local: b index: 0 type: boolean\n" + 515 " [pc: 12, pc: 15] local: c index: 1 type: C\n" + 516 " [pc: 23, pc: 30] local: c index: 1 type: C\n" + 517 " Stack map table: number of frames 2\n" + 518 " [pc: 15, same]\n" + 519 " [pc: 23, append: {C}]\n"; 520 521 int index = actualOutput.indexOf(expectedOutput); 522 if (index == -1 || expectedOutput.length() == 0) { 523 System.out.println(Util.displayString(actualOutput, 2)); 524 } 525 if (index == -1) { 526 assertEquals("Wrong contents", expectedOutput, actualOutput); 527 } 528 } test005()529 public void test005() throws Exception { 530 this.runConformTest( 531 new String[] { 532 "X.java", 533 "public class X {\n" + 534 " public static void main(String args[]) {\n" + 535 " int i = 0, j, k, l;\n" + 536 " boolean b;\n" + 537 " if (i == 0 && (j = ++i) > 0)\n" + 538 " i += j;\n" + 539 " while (true) {\n" + 540 " k = 3;\n" + 541 " break;\n" + 542 " } \n" + 543 " i -= k;\n" + 544 " b = false && (i = l) > 0;\n" + 545 " if (i > 0)\n" + 546 " l = i;\n" + 547 " else\n" + 548 " l = k;\n" + 549 " j = l;\n" + 550 " if (i != -1 || j != 3 || k != 3 || l != 3)\n" + 551 " System.out.println(\"FAILED\");\n" + 552 " System.out.println(\"SUCCESS\");\n" + 553 " }\n" + 554 "}", 555 }, 556 "SUCCESS"); 557 558 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 559 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 560 String actualOutput = 561 disassembler.disassemble( 562 classFileBytes, 563 "\n", 564 ClassFileBytesDisassembler.DETAILED); 565 566 String expectedOutput = 567 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 568 " // Stack: 2, Locals: 6\n" + 569 " public static void main(java.lang.String[] args);\n" + 570 " 0 iconst_0\n" + 571 " 1 istore_1 [i]\n" + 572 " 2 iload_1 [i]\n" + 573 " 3 ifne 19\n" + 574 " 6 iinc 1 1 [i]\n" + 575 " 9 iload_1 [i]\n" + 576 " 10 dup\n" + 577 " 11 istore_2 [j]\n" + 578 " 12 ifle 19\n" + 579 " 15 iload_1 [i]\n" + 580 " 16 iload_2 [j]\n" + 581 " 17 iadd\n" + 582 " 18 istore_1 [i]\n" + 583 " 19 iconst_3\n" + 584 " 20 istore_3 [k]\n" + 585 " 21 iload_1 [i]\n" + 586 " 22 iload_3 [k]\n" + 587 " 23 isub\n" + 588 " 24 istore_1 [i]\n" + 589 " 25 iconst_0\n" + 590 " 26 istore 5 [b]\n" + 591 " 28 iload_1 [i]\n" + 592 " 29 ifle 38\n" + 593 " 32 iload_1 [i]\n" + 594 " 33 istore 4 [l]\n" + 595 " 35 goto 41\n" + 596 " 38 iload_3 [k]\n" + 597 " 39 istore 4 [l]\n" + 598 " 41 iload 4 [l]\n" + 599 " 43 istore_2 [j]\n" + 600 " 44 iload_1 [i]\n" + 601 " 45 iconst_m1\n" + 602 " 46 if_icmpne 65\n" + 603 " 49 iload_2 [j]\n" + 604 " 50 iconst_3\n" + 605 " 51 if_icmpne 65\n" + 606 " 54 iload_3 [k]\n" + 607 " 55 iconst_3\n" + 608 " 56 if_icmpne 65\n" + 609 " 59 iload 4 [l]\n" + 610 " 61 iconst_3\n" + 611 " 62 if_icmpeq 73\n" + 612 " 65 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 613 " 68 ldc <String \"FAILED\"> [22]\n" + 614 " 70 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 615 " 73 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 616 " 76 ldc <String \"SUCCESS\"> [30]\n" + 617 " 78 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 618 " 81 return\n" + 619 " Line numbers:\n" + 620 " [pc: 0, line: 3]\n" + 621 " [pc: 2, line: 5]\n" + 622 " [pc: 15, line: 6]\n" + 623 " [pc: 19, line: 8]\n" + 624 " [pc: 21, line: 9]\n" + 625 " [pc: 22, line: 11]\n" + 626 " [pc: 25, line: 12]\n" + 627 " [pc: 28, line: 13]\n" + 628 " [pc: 32, line: 14]\n" + 629 " [pc: 38, line: 16]\n" + 630 " [pc: 41, line: 17]\n" + 631 " [pc: 44, line: 18]\n" + 632 " [pc: 65, line: 19]\n" + 633 " [pc: 73, line: 20]\n" + 634 " [pc: 81, line: 21]\n" + 635 " Local variable table:\n" + 636 " [pc: 0, pc: 82] local: args index: 0 type: java.lang.String[]\n" + 637 " [pc: 2, pc: 82] local: i index: 1 type: int\n" + 638 " [pc: 12, pc: 19] local: j index: 2 type: int\n" + 639 " [pc: 44, pc: 82] local: j index: 2 type: int\n" + 640 " [pc: 21, pc: 82] local: k index: 3 type: int\n" + 641 " [pc: 35, pc: 38] local: l index: 4 type: int\n" + 642 " [pc: 41, pc: 82] local: l index: 4 type: int\n" + 643 " [pc: 28, pc: 82] local: b index: 5 type: boolean\n" + 644 " Stack map table: number of frames 5\n" + 645 " [pc: 19, append: {int}]\n" + 646 " [pc: 38, full, stack: {}, locals: {java.lang.String[], int, _, int, _, int}]\n" + 647 " [pc: 41, full, stack: {}, locals: {java.lang.String[], int, _, int, int, int}]\n" + 648 " [pc: 65, full, stack: {}, locals: {java.lang.String[], int, int, int, int, int}]\n" + 649 " [pc: 73, same]\n"; 650 651 int index = actualOutput.indexOf(expectedOutput); 652 if (index == -1 || expectedOutput.length() == 0) { 653 System.out.println(Util.displayString(actualOutput, 2)); 654 } 655 if (index == -1) { 656 assertEquals("Wrong contents", expectedOutput, actualOutput); 657 } 658 } 659 test006()660 public void test006() throws Exception { 661 this.runConformTest( 662 new String[] { 663 "X.java", 664 "public class X {\n" + 665 " void foo (int n) {\n" + 666 " synchronized (this) {\n" + 667 " switch (n) {\n" + 668 " case 1:\n" + 669 " throw new NullPointerException();\n" + 670 " }\n" + 671 " }\n" + 672 " }\n" + 673 " public static void main(String args[]) {\n" + 674 " try {\n" + 675 " new X().foo(1);\n" + 676 " } catch(Exception e) {\n" + 677 " System.out.println(\"SUCCESS\"); \n" + 678 " }\n" + 679 " } \n" + 680 "}", 681 }, 682 "SUCCESS"); 683 684 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 685 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 686 String actualOutput = 687 disassembler.disassemble( 688 classFileBytes, 689 "\n", 690 ClassFileBytesDisassembler.DETAILED); 691 692 String expectedOutput = 693 " // Method descriptor #15 (I)V\n" + 694 " // Stack: 2, Locals: 3\n" + 695 " void foo(int n);\n" + 696 " 0 aload_0 [this]\n" + 697 " 1 dup\n" + 698 " 2 astore_2\n" + 699 " 3 monitorenter\n" + 700 " 4 iload_1 [n]\n" + 701 " 5 tableswitch default: 32\n" + 702 " case 1: 24\n" + 703 " 24 new java.lang.NullPointerException [16]\n" + 704 " 27 dup\n" + 705 " 28 invokespecial java.lang.NullPointerException() [18]\n" + 706 " 31 athrow\n" + 707 " 32 aload_2\n" + 708 " 33 monitorexit\n" + 709 " 34 goto 40\n" + 710 " 37 aload_2\n" + 711 " 38 monitorexit\n" + 712 " 39 athrow\n" + 713 " 40 return\n" + 714 " Exception Table:\n" + 715 " [pc: 4, pc: 34] -> 37 when : any\n" + 716 " [pc: 37, pc: 39] -> 37 when : any\n" + 717 " Line numbers:\n" + 718 " [pc: 0, line: 3]\n" + 719 " [pc: 4, line: 4]\n" + 720 " [pc: 24, line: 6]\n" + 721 " [pc: 32, line: 3]\n" + 722 " [pc: 40, line: 9]\n" + 723 " Local variable table:\n" + 724 " [pc: 0, pc: 41] local: this index: 0 type: X\n" + 725 " [pc: 0, pc: 41] local: n index: 1 type: int\n" + 726 " Stack map table: number of frames 4\n" + 727 " [pc: 24, append: {X}]\n" + 728 " [pc: 32, same]\n" + 729 " [pc: 37, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 730 " [pc: 40, chop 1 local(s)]\n"; 731 732 int index = actualOutput.indexOf(expectedOutput); 733 if (index == -1 || expectedOutput.length() == 0) { 734 System.out.println(Util.displayString(actualOutput, 2)); 735 } 736 if (index == -1) { 737 assertEquals("Wrong contents", expectedOutput, actualOutput); 738 } 739 } 740 test007()741 public void test007() throws Exception { 742 this.runConformTest( 743 new String[] { 744 "X.java", 745 "public class X {\n" + 746 " StringBuffer foo2(boolean b) {\n" + 747 " System.out.println(\"foo2\");\n" + 748 " return new StringBuffer(b ? \"true\" : \"false\");\n" + 749 " }\n" + 750 " public static void main(String[] args) {\n" + 751 " System.out.println(\"SUCCESS\");\n" + 752 " }\n" + 753 "}", 754 }, 755 "SUCCESS"); 756 757 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 758 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 759 String actualOutput = 760 disassembler.disassemble( 761 classFileBytes, 762 "\n", 763 ClassFileBytesDisassembler.DETAILED); 764 765 String expectedOutput = 766 " // Method descriptor #15 (Z)Ljava/lang/StringBuffer;\n" + 767 " // Stack: 3, Locals: 2\n" + 768 " java.lang.StringBuffer foo2(boolean b);\n" + 769 " 0 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 770 " 3 ldc <String \"foo2\"> [22]\n" + 771 " 5 invokevirtual java.io.PrintStream.println(java.lang.String) : void [23]\n" + 772 " 8 new java.lang.StringBuffer [29]\n" + 773 " 11 dup\n" + 774 " 12 iload_1 [b]\n" + 775 " 13 ifeq 21\n" + 776 " 16 ldc <String \"true\"> [31]\n" + 777 " 18 goto 23\n" + 778 " 21 ldc <String \"false\"> [33]\n" + 779 " 23 invokespecial java.lang.StringBuffer(java.lang.String) [35]\n" + 780 " 26 areturn\n" + 781 " Line numbers:\n" + 782 " [pc: 0, line: 3]\n" + 783 " [pc: 8, line: 4]\n" + 784 " Local variable table:\n" + 785 " [pc: 0, pc: 27] local: this index: 0 type: X\n" + 786 " [pc: 0, pc: 27] local: b index: 1 type: boolean\n" + 787 " Stack map table: number of frames 2\n" + 788 " [pc: 21, full, stack: {uninitialized(8), uninitialized(8)}, locals: {X, int}]\n" + 789 " [pc: 23, full, stack: {uninitialized(8), uninitialized(8), java.lang.String}, locals: {X, int}]\n"; 790 791 int index = actualOutput.indexOf(expectedOutput); 792 if (index == -1 || expectedOutput.length() == 0) { 793 System.out.println(Util.displayString(actualOutput, 2)); 794 } 795 if (index == -1) { 796 assertEquals("Wrong contents", expectedOutput, actualOutput); 797 } 798 } 799 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=141252 test008()800 public void test008() throws Exception { 801 this.runConformTest( 802 new String[] { 803 "X.java", 804 "public class X {\n" + 805 " public static void main(String[] args) {\n" + 806 " int foo = 0;\n" + 807 " String bar = \"zero\";\n" + 808 " System.out.println((foo != 0) ? foo : bar);\n" + 809 " }\n" + 810 " <T extends Comparable<?>> void foo(T foo) {\n" + 811 " T bar = null;\n" + 812 " System.out.println((foo != null) ? foo : bar);\n" + 813 " } \n" + 814 "}\n", 815 }, 816 "zero"); 817 818 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 819 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 820 String actualOutput = 821 disassembler.disassemble( 822 classFileBytes, 823 "\n", 824 ClassFileBytesDisassembler.DETAILED); 825 826 String expectedOutput = 827 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 828 " // Stack: 2, Locals: 3\n" + 829 " public static void main(java.lang.String[] args);\n" + 830 " 0 iconst_0\n" + 831 " 1 istore_1 [foo]\n" + 832 " 2 ldc <String \"zero\"> [16]\n" + 833 " 4 astore_2 [bar]\n" + 834 " 5 getstatic java.lang.System.out : java.io.PrintStream [18]\n" + 835 " 8 iload_1 [foo]\n" + 836 " 9 ifeq 19\n" + 837 " 12 iload_1 [foo]\n" + 838 " 13 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [24]\n" + 839 " 16 goto 20\n" + 840 " 19 aload_2 [bar]\n" + 841 " 20 invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" + 842 " 23 return\n" + 843 " Line numbers:\n" + 844 " [pc: 0, line: 3]\n" + 845 " [pc: 2, line: 4]\n" + 846 " [pc: 5, line: 5]\n" + 847 " [pc: 23, line: 6]\n" + 848 " Local variable table:\n" + 849 " [pc: 0, pc: 24] local: args index: 0 type: java.lang.String[]\n" + 850 " [pc: 2, pc: 24] local: foo index: 1 type: int\n" + 851 " [pc: 5, pc: 24] local: bar index: 2 type: java.lang.String\n" + 852 " Stack map table: number of frames 2\n" + 853 " [pc: 19, full, stack: {java.io.PrintStream}, locals: {java.lang.String[], int, java.lang.String}]\n" + 854 " [pc: 20, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {java.lang.String[], int, java.lang.String}]\n" + 855 " \n" + 856 " // Method descriptor #48 (Ljava/lang/Comparable;)V\n" + 857 " // Signature: <T::Ljava/lang/Comparable<*>;>(TT;)V\n" + 858 " // Stack: 2, Locals: 3\n" + 859 " void foo(java.lang.Comparable foo);\n" + 860 " 0 aconst_null\n" + 861 " 1 astore_2 [bar]\n" + 862 " 2 getstatic java.lang.System.out : java.io.PrintStream [18]\n" + 863 " 5 aload_1 [foo]\n" + 864 " 6 ifnull 13\n" + 865 " 9 aload_1 [foo]\n" + 866 " 10 goto 14\n" + 867 " 13 aload_2 [bar]\n" + 868 " 14 invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" + 869 " 17 return\n" + 870 " Line numbers:\n" + 871 " [pc: 0, line: 8]\n" + 872 " [pc: 2, line: 9]\n" + 873 " [pc: 17, line: 10]\n" + 874 " Local variable table:\n" + 875 " [pc: 0, pc: 18] local: this index: 0 type: X\n" + 876 " [pc: 0, pc: 18] local: foo index: 1 type: java.lang.Comparable\n" + 877 " [pc: 2, pc: 18] local: bar index: 2 type: java.lang.Comparable\n" + 878 " Local variable type table:\n" + 879 " [pc: 0, pc: 18] local: foo index: 1 type: T\n" + 880 " [pc: 2, pc: 18] local: bar index: 2 type: T\n" + 881 " Stack map table: number of frames 2\n" + 882 " [pc: 13, full, stack: {java.io.PrintStream}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n" + 883 " [pc: 14, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n"; 884 885 int index = actualOutput.indexOf(expectedOutput); 886 if (index == -1 || expectedOutput.length() == 0) { 887 System.out.println(Util.displayString(actualOutput, 2)); 888 } 889 if (index == -1) { 890 assertEquals("Wrong contents", expectedOutput, actualOutput); 891 } 892 } 893 test009()894 public void test009() throws Exception { 895 this.runConformTest( 896 new String[] { 897 "X.java", 898 "public class X {\n" + 899 " String s;\n" + 900 " X() {\n" + 901 " int i = 0;\n" + 902 " if (s == null) {\n" + 903 " System.out.print(\"PASSED\");\n" + 904 " } else {\n" + 905 " System.out.print(\"FAILED\");\n" + 906 " }\n" + 907 " System.out.print(\"DONE\" + i);\n" + 908 " }\n" + 909 " public static void main(String argv[]) {\n" + 910 " new X();\n" + 911 " }\n" + 912 "}", 913 }, 914 "PASSEDDONE0"); 915 916 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 917 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 918 String actualOutput = 919 disassembler.disassemble( 920 classFileBytes, 921 "\n", 922 ClassFileBytesDisassembler.DETAILED); 923 924 String expectedOutput = 925 " // Method descriptor #8 ()V\n" + 926 " // Stack: 4, Locals: 2\n" + 927 " X();\n" + 928 " 0 aload_0 [this]\n" + 929 " 1 invokespecial java.lang.Object() [10]\n" + 930 " 4 iconst_0\n" + 931 " 5 istore_1 [i]\n" + 932 " 6 aload_0 [this]\n" + 933 " 7 getfield X.s : java.lang.String [12]\n" + 934 " 10 ifnonnull 24\n" + 935 " 13 getstatic java.lang.System.out : java.io.PrintStream [14]\n" + 936 " 16 ldc <String \"PASSED\"> [20]\n" + 937 " 18 invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" + 938 " 21 goto 32\n" + 939 " 24 getstatic java.lang.System.out : java.io.PrintStream [14]\n" + 940 " 27 ldc <String \"FAILED\"> [28]\n" + 941 " 29 invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" + 942 " 32 getstatic java.lang.System.out : java.io.PrintStream [14]\n" + 943 " 35 new java.lang.StringBuilder [30]\n" + 944 " 38 dup\n" + 945 " 39 ldc <String \"DONE\"> [32]\n" + 946 " 41 invokespecial java.lang.StringBuilder(java.lang.String) [34]\n" + 947 " 44 iload_1 [i]\n" + 948 " 45 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [36]\n" + 949 " 48 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [40]\n" + 950 " 51 invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" + 951 " 54 return\n" + 952 " Line numbers:\n" + 953 " [pc: 0, line: 3]\n" + 954 " [pc: 4, line: 4]\n" + 955 " [pc: 6, line: 5]\n" + 956 " [pc: 13, line: 6]\n" + 957 " [pc: 21, line: 7]\n" + 958 " [pc: 24, line: 8]\n" + 959 " [pc: 32, line: 10]\n" + 960 " [pc: 54, line: 11]\n" + 961 " Local variable table:\n" + 962 " [pc: 0, pc: 55] local: this index: 0 type: X\n" + 963 " [pc: 6, pc: 55] local: i index: 1 type: int\n" + 964 " Stack map table: number of frames 2\n" + 965 " [pc: 24, full, stack: {}, locals: {X, int}]\n" + 966 " [pc: 32, same]\n"; 967 968 int index = actualOutput.indexOf(expectedOutput); 969 if (index == -1 || expectedOutput.length() == 0) { 970 System.out.println(Util.displayString(actualOutput, 2)); 971 } 972 if (index == -1) { 973 assertEquals("Wrong contents", expectedOutput, actualOutput); 974 } 975 } 976 test010()977 public void test010() throws Exception { 978 this.runConformTest( 979 new String[] { 980 "X.java", 981 "public class X {\n" + 982 " public static void main(String[] args) {\n" + 983 " int[] tab = new int[0];\n" + 984 " Object o = tab;\n" + 985 " Object o1 = null;\n" + 986 " if (tab.length == 0) {\n" + 987 " System.out.println(tab.getClass());\n" + 988 " }\n" + 989 " o1 = tab.clone();\n" + 990 " }\n" + 991 "}", 992 }, 993 "class [I"); 994 995 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 996 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 997 String actualOutput = 998 disassembler.disassemble( 999 classFileBytes, 1000 "\n", 1001 ClassFileBytesDisassembler.DETAILED); 1002 1003 String expectedOutput = 1004 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 1005 " // Stack: 2, Locals: 4\n" + 1006 " public static void main(java.lang.String[] args);\n" + 1007 " 0 iconst_0\n" + 1008 " 1 newarray int [10]\n" + 1009 " 3 astore_1 [tab]\n" + 1010 " 4 aload_1 [tab]\n" + 1011 " 5 astore_2 [o]\n" + 1012 " 6 aconst_null\n" + 1013 " 7 astore_3 [o1]\n" + 1014 " 8 aload_1 [tab]\n" + 1015 " 9 arraylength\n" + 1016 " 10 ifne 23\n" + 1017 " 13 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 1018 " 16 aload_1 [tab]\n" + 1019 " 17 invokevirtual java.lang.Object.getClass() : java.lang.Class [22]\n" + 1020 " 20 invokevirtual java.io.PrintStream.println(java.lang.Object) : void [26]\n" + 1021 " 23 aload_1 [tab]\n" + 1022 " 24 invokevirtual int[].clone() : java.lang.Object [32]\n" + 1023 " 27 astore_3 [o1]\n" + 1024 " 28 return\n" + 1025 " Line numbers:\n" + 1026 " [pc: 0, line: 3]\n" + 1027 " [pc: 4, line: 4]\n" + 1028 " [pc: 6, line: 5]\n" + 1029 " [pc: 8, line: 6]\n" + 1030 " [pc: 13, line: 7]\n" + 1031 " [pc: 23, line: 9]\n" + 1032 " [pc: 28, line: 10]\n" + 1033 " Local variable table:\n" + 1034 " [pc: 0, pc: 29] local: args index: 0 type: java.lang.String[]\n" + 1035 " [pc: 4, pc: 29] local: tab index: 1 type: int[]\n" + 1036 " [pc: 6, pc: 29] local: o index: 2 type: java.lang.Object\n" + 1037 " [pc: 8, pc: 29] local: o1 index: 3 type: java.lang.Object\n" + 1038 " Stack map table: number of frames 1\n" + 1039 " [pc: 23, append: {int[], java.lang.Object, java.lang.Object}]\n"; 1040 1041 int index = actualOutput.indexOf(expectedOutput); 1042 if (index == -1 || expectedOutput.length() == 0) { 1043 System.out.println(Util.displayString(actualOutput, 2)); 1044 } 1045 if (index == -1) { 1046 assertEquals("Wrong contents", expectedOutput, actualOutput); 1047 } 1048 } 1049 test011()1050 public void test011() throws Exception { 1051 this.runConformTest( 1052 new String[] { 1053 "X.java", 1054 "public class X {\n" + 1055 " Object o;\n" + 1056 "\n" + 1057 " public static void main(String[] args) {\n" + 1058 " X x;\n" + 1059 " for (int i = 0; i < 10; i++) {\n" + 1060 " if (i < 90) {\n" + 1061 " x = new X();\n" + 1062 " if (i > 4) {\n" + 1063 " x.o = new Object();\n" + 1064 " } else {\n" + 1065 " x.o = \"0\";\n" + 1066 " }\n" + 1067 " switch (i) {\n" + 1068 " case 0:\n" + 1069 " if (x.o instanceof String) {\n" + 1070 " System.out.print(\"1\");\n" + 1071 " }\n" + 1072 " break;\n" + 1073 " default: {\n" + 1074 " Object diff = x.o;\n" + 1075 " if (diff != null) {\n" + 1076 " System.out.print(\"2\");\n" + 1077 " }\n" + 1078 " }\n" + 1079 " }\n" + 1080 " }\n" + 1081 " }\n" + 1082 " }\n" + 1083 "}", 1084 }, 1085 "1222222222"); 1086 1087 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1088 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1089 String actualOutput = 1090 disassembler.disassemble( 1091 classFileBytes, 1092 "\n", 1093 ClassFileBytesDisassembler.DETAILED); 1094 1095 String expectedOutput = 1096 " // Method descriptor #17 ([Ljava/lang/String;)V\n" + 1097 " // Stack: 3, Locals: 4\n" + 1098 " public static void main(java.lang.String[] args);\n" + 1099 " 0 iconst_0\n" + 1100 " 1 istore_2 [i]\n" + 1101 " 2 goto 105\n" + 1102 " 5 iload_2 [i]\n" + 1103 " 6 bipush 90\n" + 1104 " 8 if_icmpge 102\n" + 1105 " 11 new X [1]\n" + 1106 " 14 dup\n" + 1107 " 15 invokespecial X() [18]\n" + 1108 " 18 astore_1 [x]\n" + 1109 " 19 iload_2 [i]\n" + 1110 " 20 iconst_4\n" + 1111 " 21 if_icmple 38\n" + 1112 " 24 aload_1 [x]\n" + 1113 " 25 new java.lang.Object [3]\n" + 1114 " 28 dup\n" + 1115 " 29 invokespecial java.lang.Object() [10]\n" + 1116 " 32 putfield X.o : java.lang.Object [19]\n" + 1117 " 35 goto 44\n" + 1118 " 38 aload_1 [x]\n" + 1119 " 39 ldc <String \"0\"> [21]\n" + 1120 " 41 putfield X.o : java.lang.Object [19]\n" + 1121 " 44 iload_2 [i]\n" + 1122 " 45 tableswitch default: 85\n" + 1123 " case 0: 64\n" + 1124 " 64 aload_1 [x]\n" + 1125 " 65 getfield X.o : java.lang.Object [19]\n" + 1126 " 68 instanceof java.lang.String [23]\n" + 1127 " 71 ifeq 102\n" + 1128 " 74 getstatic java.lang.System.out : java.io.PrintStream [25]\n" + 1129 " 77 ldc <String \"1\"> [31]\n" + 1130 " 79 invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" + 1131 " 82 goto 102\n" + 1132 " 85 aload_1 [x]\n" + 1133 " 86 getfield X.o : java.lang.Object [19]\n" + 1134 " 89 astore_3 [diff]\n" + 1135 " 90 aload_3 [diff]\n" + 1136 " 91 ifnull 102\n" + 1137 " 94 getstatic java.lang.System.out : java.io.PrintStream [25]\n" + 1138 " 97 ldc <String \"2\"> [39]\n" + 1139 " 99 invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" + 1140 " 102 iinc 2 1 [i]\n" + 1141 " 105 iload_2 [i]\n" + 1142 " 106 bipush 10\n" + 1143 " 108 if_icmplt 5\n" + 1144 " 111 return\n" + 1145 " Line numbers:\n" + 1146 " [pc: 0, line: 6]\n" + 1147 " [pc: 5, line: 7]\n" + 1148 " [pc: 11, line: 8]\n" + 1149 " [pc: 19, line: 9]\n" + 1150 " [pc: 24, line: 10]\n" + 1151 " [pc: 35, line: 11]\n" + 1152 " [pc: 38, line: 12]\n" + 1153 " [pc: 44, line: 14]\n" + 1154 " [pc: 64, line: 16]\n" + 1155 " [pc: 74, line: 17]\n" + 1156 " [pc: 82, line: 19]\n" + 1157 " [pc: 85, line: 21]\n" + 1158 " [pc: 90, line: 22]\n" + 1159 " [pc: 94, line: 23]\n" + 1160 " [pc: 102, line: 6]\n" + 1161 " [pc: 111, line: 29]\n" + 1162 " Local variable table:\n" + 1163 " [pc: 0, pc: 112] local: args index: 0 type: java.lang.String[]\n" + 1164 " [pc: 19, pc: 102] local: x index: 1 type: X\n" + 1165 " [pc: 2, pc: 111] local: i index: 2 type: int\n" + 1166 " [pc: 90, pc: 102] local: diff index: 3 type: java.lang.Object\n" + 1167 " Stack map table: number of frames 7\n" + 1168 " [pc: 5, full, stack: {}, locals: {java.lang.String[], _, int}]\n" + 1169 " [pc: 38, full, stack: {}, locals: {java.lang.String[], X, int}]\n" + 1170 " [pc: 44, same]\n" + 1171 " [pc: 64, same]\n" + 1172 " [pc: 85, same]\n" + 1173 " [pc: 102, full, stack: {}, locals: {java.lang.String[], _, int}]\n" + 1174 " [pc: 105, same]\n"; 1175 1176 int index = actualOutput.indexOf(expectedOutput); 1177 if (index == -1 || expectedOutput.length() == 0) { 1178 System.out.println(Util.displayString(actualOutput, 2)); 1179 } 1180 if (index == -1) { 1181 assertEquals("Wrong contents", expectedOutput, actualOutput); 1182 } 1183 } 1184 test012()1185 public void test012() throws Exception { 1186 this.runConformTest( 1187 new String[] { 1188 "X.java", 1189 "public class X {\n" + 1190 " public static void main(String[] args) {\n" + 1191 " X x;\n" + 1192 " Object o;\n" + 1193 " for (int i = 0; i < 10; i++) {\n" + 1194 " if (i < 90) {\n" + 1195 " x = new X();\n" + 1196 " if (i > 4) {\n" + 1197 " o = new Object();\n" + 1198 " } else {\n" + 1199 " o = null;\n" + 1200 " }\n" + 1201 " switch (i) {\n" + 1202 " case 0:\n" + 1203 " if (o instanceof String) {\n" + 1204 " System.out.print(\"1\");\n" + 1205 " return;\n" + 1206 " } else {\n" + 1207 " break;\n" + 1208 " }\n" + 1209 " default: {\n" + 1210 " Object diff = o;\n" + 1211 " if (diff != null) {\n" + 1212 " System.out.print(\"2\");\n" + 1213 " }\n" + 1214 " break;\n" + 1215 " }\n" + 1216 " }\n" + 1217 " System.out.print(\"3\");\n" + 1218 " }\n" + 1219 " }\n" + 1220 " }\n" + 1221 "}", 1222 }, 1223 "333332323232323"); 1224 1225 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1226 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1227 String actualOutput = 1228 disassembler.disassemble( 1229 classFileBytes, 1230 "\n", 1231 ClassFileBytesDisassembler.DETAILED); 1232 1233 String expectedOutput = 1234 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 1235 " // Stack: 2, Locals: 5\n" + 1236 " public static void main(java.lang.String[] args);\n" + 1237 " 0 iconst_0\n" + 1238 " 1 istore_3 [i]\n" + 1239 " 2 goto 99\n" + 1240 " 5 iload_3 [i]\n" + 1241 " 6 bipush 90\n" + 1242 " 8 if_icmpge 96\n" + 1243 " 11 new X [1]\n" + 1244 " 14 dup\n" + 1245 " 15 invokespecial X() [16]\n" + 1246 " 18 astore_1 [x]\n" + 1247 " 19 iload_3 [i]\n" + 1248 " 20 iconst_4\n" + 1249 " 21 if_icmple 35\n" + 1250 " 24 new java.lang.Object [3]\n" + 1251 " 27 dup\n" + 1252 " 28 invokespecial java.lang.Object() [8]\n" + 1253 " 31 astore_2 [o]\n" + 1254 " 32 goto 37\n" + 1255 " 35 aconst_null\n" + 1256 " 36 astore_2 [o]\n" + 1257 " 37 iload_3 [i]\n" + 1258 " 38 tableswitch default: 72\n" + 1259 " case 0: 56\n" + 1260 " 56 aload_2 [o]\n" + 1261 " 57 instanceof java.lang.String [17]\n" + 1262 " 60 ifeq 88\n" + 1263 " 63 getstatic java.lang.System.out : java.io.PrintStream [19]\n" + 1264 " 66 ldc <String \"1\"> [25]\n" + 1265 " 68 invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" + 1266 " 71 return\n" + 1267 " 72 aload_2 [o]\n" + 1268 " 73 astore 4 [diff]\n" + 1269 " 75 aload 4 [diff]\n" + 1270 " 77 ifnull 88\n" + 1271 " 80 getstatic java.lang.System.out : java.io.PrintStream [19]\n" + 1272 " 83 ldc <String \"2\"> [33]\n" + 1273 " 85 invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" + 1274 " 88 getstatic java.lang.System.out : java.io.PrintStream [19]\n" + 1275 " 91 ldc <String \"3\"> [35]\n" + 1276 " 93 invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" + 1277 " 96 iinc 3 1 [i]\n" + 1278 " 99 iload_3 [i]\n" + 1279 " 100 bipush 10\n" + 1280 " 102 if_icmplt 5\n" + 1281 " 105 return\n" + 1282 " Line numbers:\n" + 1283 " [pc: 0, line: 5]\n" + 1284 " [pc: 5, line: 6]\n" + 1285 " [pc: 11, line: 7]\n" + 1286 " [pc: 19, line: 8]\n" + 1287 " [pc: 24, line: 9]\n" + 1288 " [pc: 32, line: 10]\n" + 1289 " [pc: 35, line: 11]\n" + 1290 " [pc: 37, line: 13]\n" + 1291 " [pc: 56, line: 15]\n" + 1292 " [pc: 63, line: 16]\n" + 1293 " [pc: 71, line: 17]\n" + 1294 " [pc: 72, line: 22]\n" + 1295 " [pc: 75, line: 23]\n" + 1296 " [pc: 80, line: 24]\n" + 1297 " [pc: 88, line: 29]\n" + 1298 " [pc: 96, line: 5]\n" + 1299 " [pc: 105, line: 32]\n" + 1300 " Local variable table:\n" + 1301 " [pc: 0, pc: 106] local: args index: 0 type: java.lang.String[]\n" + 1302 " [pc: 19, pc: 96] local: x index: 1 type: X\n" + 1303 " [pc: 32, pc: 35] local: o index: 2 type: java.lang.Object\n" + 1304 " [pc: 37, pc: 96] local: o index: 2 type: java.lang.Object\n" + 1305 " [pc: 2, pc: 105] local: i index: 3 type: int\n" + 1306 " [pc: 75, pc: 88] local: diff index: 4 type: java.lang.Object\n" + 1307 " Stack map table: number of frames 8\n" + 1308 " [pc: 5, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" + 1309 " [pc: 35, full, stack: {}, locals: {java.lang.String[], X, _, int}]\n" + 1310 " [pc: 37, full, stack: {}, locals: {java.lang.String[], X, java.lang.Object, int}]\n" + 1311 " [pc: 56, same]\n" + 1312 " [pc: 72, same]\n" + 1313 " [pc: 88, same]\n" + 1314 " [pc: 96, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" + 1315 " [pc: 99, same]\n"; 1316 1317 int index = actualOutput.indexOf(expectedOutput); 1318 if (index == -1 || expectedOutput.length() == 0) { 1319 System.out.println(Util.displayString(actualOutput, 2)); 1320 } 1321 if (index == -1) { 1322 assertEquals("Wrong contents", expectedOutput, actualOutput); 1323 } 1324 } 1325 test013()1326 public void test013() throws Exception { 1327 this.runConformTest( 1328 new String[] { 1329 "X.java", 1330 "public class X {\n" + 1331 "\n" + 1332 " void foo() {\n" + 1333 " synchronized (this) {\n" + 1334 " int n=0;\n" + 1335 " try {\n" + 1336 " Thread.sleep(n); \n" + 1337 " } catch (Exception e ) {\n" + 1338 " }\n" + 1339 " }\n" + 1340 " }\n" + 1341 " \n" + 1342 " public static void main(String[] args) {}\n" + 1343 "}", 1344 }, 1345 ""); 1346 1347 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1348 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1349 String actualOutput = 1350 disassembler.disassemble( 1351 classFileBytes, 1352 "\n", 1353 ClassFileBytesDisassembler.DETAILED); 1354 1355 String expectedOutput = 1356 " // Method descriptor #6 ()V\n" + 1357 " // Stack: 2, Locals: 4\n" + 1358 " void foo();\n" + 1359 " 0 aload_0 [this]\n" + 1360 " 1 dup\n" + 1361 " 2 astore_1\n" + 1362 " 3 monitorenter\n" + 1363 " 4 iconst_0\n" + 1364 " 5 istore_2 [n]\n" + 1365 " 6 iload_2 [n]\n" + 1366 " 7 i2l\n" + 1367 " 8 invokestatic java.lang.Thread.sleep(long) : void [15]\n" + 1368 " 11 goto 15\n" + 1369 " 14 astore_3\n" + 1370 " 15 aload_1\n" + 1371 " 16 monitorexit\n" + 1372 " 17 goto 23\n" + 1373 " 20 aload_1\n" + 1374 " 21 monitorexit\n" + 1375 " 22 athrow\n" + 1376 " 23 return\n" + 1377 " Exception Table:\n" + 1378 " [pc: 6, pc: 11] -> 14 when : java.lang.Exception\n" + 1379 " [pc: 4, pc: 17] -> 20 when : any\n" + 1380 " [pc: 20, pc: 22] -> 20 when : any\n" + 1381 " Line numbers:\n" + 1382 " [pc: 0, line: 4]\n" + 1383 " [pc: 4, line: 5]\n" + 1384 " [pc: 6, line: 7]\n" + 1385 " [pc: 11, line: 8]\n" + 1386 " [pc: 15, line: 4]\n" + 1387 " [pc: 23, line: 11]\n" + 1388 " Local variable table:\n" + 1389 " [pc: 0, pc: 24] local: this index: 0 type: X\n" + 1390 " [pc: 6, pc: 15] local: n index: 2 type: int\n" + 1391 " Stack map table: number of frames 4\n" + 1392 " [pc: 14, full, stack: {java.lang.Exception}, locals: {X, X, int}]\n" + 1393 " [pc: 15, chop 1 local(s)]\n" + 1394 " [pc: 20, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 1395 " [pc: 23, chop 1 local(s)]\n"; 1396 1397 int index = actualOutput.indexOf(expectedOutput); 1398 if (index == -1 || expectedOutput.length() == 0) { 1399 System.out.println(Util.displayString(actualOutput, 2)); 1400 } 1401 if (index == -1) { 1402 assertEquals("Wrong contents", expectedOutput, actualOutput); 1403 } 1404 } 1405 test014()1406 public void test014() throws Exception { 1407 this.runConformTest( 1408 new String[] { 1409 "X.java", 1410 "public class X {\n" + 1411 " X() {\n" + 1412 " final int i;\n" + 1413 " synchronized (this) {\n" + 1414 " i = 8;\n" + 1415 " }\n" + 1416 " } \n" + 1417 " public static void main(String[] args) {}\n" + 1418 "}", 1419 }, 1420 ""); 1421 1422 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1423 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1424 String actualOutput = 1425 disassembler.disassemble( 1426 classFileBytes, 1427 "\n", 1428 ClassFileBytesDisassembler.DETAILED); 1429 1430 String expectedOutput = 1431 " // Method descriptor #6 ()V\n" + 1432 " // Stack: 2, Locals: 3\n" + 1433 " X();\n" + 1434 " 0 aload_0 [this]\n" + 1435 " 1 invokespecial java.lang.Object() [8]\n" + 1436 " 4 aload_0 [this]\n" + 1437 " 5 dup\n" + 1438 " 6 astore_2\n" + 1439 " 7 monitorenter\n" + 1440 " 8 bipush 8\n" + 1441 " 10 istore_1 [i]\n" + 1442 " 11 aload_2\n" + 1443 " 12 monitorexit\n" + 1444 " 13 goto 19\n" + 1445 " 16 aload_2\n" + 1446 " 17 monitorexit\n" + 1447 " 18 athrow\n" + 1448 " 19 return\n" + 1449 " Exception Table:\n" + 1450 " [pc: 8, pc: 13] -> 16 when : any\n" + 1451 " [pc: 16, pc: 18] -> 16 when : any\n" + 1452 " Line numbers:\n" + 1453 " [pc: 0, line: 2]\n" + 1454 " [pc: 4, line: 4]\n" + 1455 " [pc: 8, line: 5]\n" + 1456 " [pc: 11, line: 4]\n" + 1457 " [pc: 19, line: 7]\n" + 1458 " Local variable table:\n" + 1459 " [pc: 0, pc: 20] local: this index: 0 type: X\n" + 1460 " [pc: 11, pc: 16] local: i index: 1 type: int\n" + 1461 " [pc: 19, pc: 20] local: i index: 1 type: int\n" + 1462 " Stack map table: number of frames 2\n" + 1463 " [pc: 16, full, stack: {java.lang.Throwable}, locals: {X, _, X}]\n" + 1464 " [pc: 19, full, stack: {}, locals: {X, int}]\n"; 1465 1466 int index = actualOutput.indexOf(expectedOutput); 1467 if (index == -1 || expectedOutput.length() == 0) { 1468 System.out.println(Util.displayString(actualOutput, 2)); 1469 } 1470 if (index == -1) { 1471 assertEquals("Wrong contents", expectedOutput, actualOutput); 1472 } 1473 } 1474 test015()1475 public void test015() throws Exception { 1476 this.runConformTest( 1477 new String[] { 1478 "X.java", 1479 "public enum X {\n" + 1480 " a1(1), a2(5), a3(11);\n" + 1481 " int value;\n" + 1482 " X(int a) {\n" + 1483 " value = a;\n" + 1484 " }\n" + 1485 " int value () {\n" + 1486 " return value;\n" + 1487 " }\n" + 1488 " public static void main(String argv[]) {\n" + 1489 " }\n" + 1490 " public static int foo() {\n" + 1491 " int val;\n" + 1492 " int res = 0;\n" + 1493 " int n = 0;\n" + 1494 " X[] vals = X.values();\n" + 1495 " for (int i = 0, max = vals.length; i < max; i++) {\n" + 1496 " X e = vals[i];\n" + 1497 " if ( n == 1) {\n" + 1498 " continue;\n" + 1499 " }\n" + 1500 " val = e.value();\n" + 1501 " System.out.println(val);\n" + 1502 " }\n" + 1503 " return res;\n" + 1504 " }\n" + 1505 "}", 1506 }, 1507 ""); 1508 1509 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1510 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1511 String actualOutput = 1512 disassembler.disassemble( 1513 classFileBytes, 1514 "\n", 1515 ClassFileBytesDisassembler.DETAILED); 1516 1517 String expectedOutput = 1518 " // Method descriptor #40 ()I\n" + 1519 " // Stack: 2, Locals: 7\n" + 1520 " public static int foo();\n" + 1521 " 0 iconst_0\n" + 1522 " 1 istore_1 [res]\n" + 1523 " 2 iconst_0\n" + 1524 " 3 istore_2 [n]\n" + 1525 " 4 invokestatic X.values() : X[] [46]\n" + 1526 " 7 astore_3 [vals]\n" + 1527 " 8 iconst_0\n" + 1528 " 9 istore 4 [i]\n" + 1529 " 11 aload_3 [vals]\n" + 1530 " 12 arraylength\n" + 1531 " 13 istore 5 [max]\n" + 1532 " 15 goto 48\n" + 1533 " 18 aload_3 [vals]\n" + 1534 " 19 iload 4 [i]\n" + 1535 " 21 aaload\n" + 1536 " 22 astore 6 [e]\n" + 1537 " 24 iload_2 [n]\n" + 1538 " 25 iconst_1\n" + 1539 " 26 if_icmpne 32\n" + 1540 " 29 goto 45\n" + 1541 " 32 aload 6 [e]\n" + 1542 " 34 invokevirtual X.value() : int [50]\n" + 1543 " 37 istore_0 [val]\n" + 1544 " 38 getstatic java.lang.System.out : java.io.PrintStream [52]\n" + 1545 " 41 iload_0 [val]\n" + 1546 " 42 invokevirtual java.io.PrintStream.println(int) : void [58]\n" + 1547 " 45 iinc 4 1 [i]\n" + 1548 " 48 iload 4 [i]\n" + 1549 " 50 iload 5 [max]\n" + 1550 " 52 if_icmplt 18\n" + 1551 " 55 iload_1 [res]\n" + 1552 " 56 ireturn\n" + 1553 " Line numbers:\n" + 1554 " [pc: 0, line: 14]\n" + 1555 " [pc: 2, line: 15]\n" + 1556 " [pc: 4, line: 16]\n" + 1557 " [pc: 8, line: 17]\n" + 1558 " [pc: 18, line: 18]\n" + 1559 " [pc: 24, line: 19]\n" + 1560 " [pc: 29, line: 20]\n" + 1561 " [pc: 32, line: 22]\n" + 1562 " [pc: 38, line: 23]\n" + 1563 " [pc: 45, line: 17]\n" + 1564 " [pc: 55, line: 25]\n" + 1565 " Local variable table:\n" + 1566 " [pc: 38, pc: 45] local: val index: 0 type: int\n" + 1567 " [pc: 2, pc: 57] local: res index: 1 type: int\n" + 1568 " [pc: 4, pc: 57] local: n index: 2 type: int\n" + 1569 " [pc: 8, pc: 57] local: vals index: 3 type: X[]\n" + 1570 " [pc: 11, pc: 55] local: i index: 4 type: int\n" + 1571 " [pc: 15, pc: 55] local: max index: 5 type: int\n" + 1572 " [pc: 24, pc: 45] local: e index: 6 type: X\n" + 1573 " Stack map table: number of frames 4\n" + 1574 " [pc: 18, full, stack: {}, locals: {_, int, int, X[], int, int}]\n" + 1575 " [pc: 32, append: {X}]\n" + 1576 " [pc: 45, chop 1 local(s)]\n" + 1577 " [pc: 48, same]\n"; 1578 1579 int index = actualOutput.indexOf(expectedOutput); 1580 if (index == -1 || expectedOutput.length() == 0) { 1581 System.out.println(Util.displayString(actualOutput, 2)); 1582 } 1583 if (index == -1) { 1584 assertEquals("Wrong contents", expectedOutput, actualOutput); 1585 } 1586 } 1587 test016()1588 public void test016() throws Exception { 1589 this.runConformTest( 1590 new String[] { 1591 "X.java", 1592 "public enum X {\n" + 1593 " a1(1), a2(5), a3(11);\n" + 1594 " int value;\n" + 1595 " X(int a) {\n" + 1596 " value = a;\n" + 1597 " }\n" + 1598 " int value () {\n" + 1599 " return value;\n" + 1600 " }\n" + 1601 " public static void main(String argv[]) {\n" + 1602 " }\n" + 1603 " public static int foo() {\n" + 1604 " int val;\n" + 1605 " int res = 0;\n" + 1606 " int n = 0;\n" + 1607 " for (X e : X.values()) {\n" + 1608 " if ( n == 1) {\n" + 1609 " continue;\n" + 1610 " }\n" + 1611 " val = e.value();\n" + 1612 " System.out.println(val);\n" + 1613 " }\n" + 1614 " return res;\n" + 1615 " }\n" + 1616 "}", 1617 }, 1618 ""); 1619 1620 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1621 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1622 String actualOutput = 1623 disassembler.disassemble( 1624 classFileBytes, 1625 "\n", 1626 ClassFileBytesDisassembler.DETAILED); 1627 1628 String expectedOutput = 1629 " // Method descriptor #40 ()I\n" + 1630 " // Stack: 2, Locals: 7\n" + 1631 " public static int foo();\n" + 1632 " 0 iconst_0\n" + 1633 " 1 istore_1 [res]\n" + 1634 " 2 iconst_0\n" + 1635 " 3 istore_2 [n]\n" + 1636 " 4 invokestatic X.values() : X[] [46]\n" + 1637 " 7 dup\n" + 1638 " 8 astore 6\n" + 1639 " 10 arraylength\n" + 1640 " 11 istore 5\n" + 1641 " 13 iconst_0\n" + 1642 " 14 istore 4\n" + 1643 " 16 goto 48\n" + 1644 " 19 aload 6\n" + 1645 " 21 iload 4\n" + 1646 " 23 aaload\n" + 1647 " 24 astore_3 [e]\n" + 1648 " 25 iload_2 [n]\n" + 1649 " 26 iconst_1\n" + 1650 " 27 if_icmpne 33\n" + 1651 " 30 goto 45\n" + 1652 " 33 aload_3 [e]\n" + 1653 " 34 invokevirtual X.value() : int [50]\n" + 1654 " 37 istore_0 [val]\n" + 1655 " 38 getstatic java.lang.System.out : java.io.PrintStream [52]\n" + 1656 " 41 iload_0 [val]\n" + 1657 " 42 invokevirtual java.io.PrintStream.println(int) : void [58]\n" + 1658 " 45 iinc 4 1\n" + 1659 " 48 iload 4\n" + 1660 " 50 iload 5\n" + 1661 " 52 if_icmplt 19\n" + 1662 " 55 iload_1 [res]\n" + 1663 " 56 ireturn\n" + 1664 " Line numbers:\n" + 1665 " [pc: 0, line: 14]\n" + 1666 " [pc: 2, line: 15]\n" + 1667 " [pc: 4, line: 16]\n" + 1668 " [pc: 25, line: 17]\n" + 1669 " [pc: 30, line: 18]\n" + 1670 " [pc: 33, line: 20]\n" + 1671 " [pc: 38, line: 21]\n" + 1672 " [pc: 45, line: 16]\n" + 1673 " [pc: 55, line: 23]\n" + 1674 " Local variable table:\n" + 1675 " [pc: 38, pc: 45] local: val index: 0 type: int\n" + 1676 " [pc: 2, pc: 57] local: res index: 1 type: int\n" + 1677 " [pc: 4, pc: 57] local: n index: 2 type: int\n" + 1678 " [pc: 25, pc: 45] local: e index: 3 type: X\n" + 1679 " Stack map table: number of frames 4\n" + 1680 " [pc: 19, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" + 1681 " [pc: 33, full, stack: {}, locals: {_, int, int, X, int, int, X[]}]\n" + 1682 " [pc: 45, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" + 1683 " [pc: 48, same]\n"; 1684 1685 int index = actualOutput.indexOf(expectedOutput); 1686 if (index == -1 || expectedOutput.length() == 0) { 1687 System.out.println(Util.displayString(actualOutput, 2)); 1688 } 1689 if (index == -1) { 1690 assertEquals("Wrong contents", expectedOutput, actualOutput); 1691 } 1692 } 1693 test017()1694 public void test017() throws Exception { 1695 this.runConformTest( 1696 new String[] { 1697 "X.java", 1698 "public class X {\n" + 1699 " public static void main(String argv[]) {\n" + 1700 " int i;\n" + 1701 " \n" + 1702 " switch (i = 0) {\n" + 1703 " case 0 :\n" + 1704 " i = 1;\n" + 1705 " break;\n" + 1706 " default :\n" + 1707 " ;\n" + 1708 " }\n" + 1709 " System.out.print(i);\n" + 1710 " }\n" + 1711 "}", 1712 }, 1713 "1"); 1714 1715 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1716 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1717 String actualOutput = 1718 disassembler.disassemble( 1719 classFileBytes, 1720 "\n", 1721 ClassFileBytesDisassembler.DETAILED); 1722 1723 String expectedOutput = 1724 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 1725 " // Stack: 2, Locals: 2\n" + 1726 " public static void main(java.lang.String[] argv);\n" + 1727 " 0 iconst_0\n" + 1728 " 1 dup\n" + 1729 " 2 istore_1 [i]\n" + 1730 " 3 tableswitch default: 22\n" + 1731 " case 0: 20\n" + 1732 " 20 iconst_1\n" + 1733 " 21 istore_1 [i]\n" + 1734 " 22 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 1735 " 25 iload_1 [i]\n" + 1736 " 26 invokevirtual java.io.PrintStream.print(int) : void [22]\n" + 1737 " 29 return\n" + 1738 " Line numbers:\n" + 1739 " [pc: 0, line: 5]\n" + 1740 " [pc: 20, line: 7]\n" + 1741 " [pc: 22, line: 12]\n" + 1742 " [pc: 29, line: 13]\n" + 1743 " Local variable table:\n" + 1744 " [pc: 0, pc: 30] local: argv index: 0 type: java.lang.String[]\n" + 1745 " [pc: 3, pc: 30] local: i index: 1 type: int\n" + 1746 " Stack map table: number of frames 2\n" + 1747 " [pc: 20, append: {int}]\n" + 1748 " [pc: 22, same]\n"; 1749 1750 int index = actualOutput.indexOf(expectedOutput); 1751 if (index == -1 || expectedOutput.length() == 0) { 1752 System.out.println(Util.displayString(actualOutput, 2)); 1753 } 1754 if (index == -1) { 1755 assertEquals("Wrong contents", expectedOutput, actualOutput); 1756 } 1757 } 1758 test018()1759 public void test018() { 1760 this.runConformTest( 1761 new String[] { 1762 "X.java", 1763 "import java.util.*;\n" + 1764 "\n" + 1765 "interface Sequence<Value_Type> extends Iterable<Value_Type>{\n" + 1766 "\n" + 1767 " Value_Type get(int i);\n" + 1768 " int length();\n" + 1769 " Value_Type set(int i, Value_Type value);\n" + 1770 "}\n" + 1771 "\n" + 1772 "class ArraySequence<Value_Type> implements Sequence<Value_Type> {\n" + 1773 "\n" + 1774 " public ArraySequence(int length) {}\n" + 1775 " public Value_Type get(int i) {\n" + 1776 " return null;\n" + 1777 " }\n" + 1778 " public int length() {\n" + 1779 " return 0;\n" + 1780 " }\n" + 1781 " public Value_Type set(int i, Value_Type value) {\n" + 1782 " return value;\n" + 1783 " }\n" + 1784 " public Iterator<Value_Type> iterator() {\n" + 1785 " return null;\n" + 1786 " }\n" + 1787 "}\n" + 1788 "\n" + 1789 "class BirBlock {\n" + 1790 " void setRole(IrBlock.Role role) {}\n" + 1791 "}\n" + 1792 "\n" + 1793 "class CatchChain {\n" + 1794 " int dispatcherAddress() {\n" + 1795 " return 0;\n" + 1796 " }\n" + 1797 "}\n" + 1798 "\n" + 1799 "class ExceptionHandlerInfo {\n" + 1800 " int handlerProgramCounter() {\n" + 1801 " return 0;\n" + 1802 " }\n" + 1803 "}\n" + 1804 "\n" + 1805 "interface IrBlock {\n" + 1806 " enum Role {\n" + 1807 " EXCEPTION_DISPATCHER\n" + 1808 " }\n" + 1809 "}\n" + 1810 "\n" + 1811 "class ClassMethodActor {\n" + 1812 " Sequence<ExceptionHandlerInfo> exceptionHandlerInfos() {\n" + 1813 " return null;\n" + 1814 " }\n" + 1815 "}\n" + 1816 "\n" + 1817 "public class X {\n" + 1818 "\n" + 1819 " private Sequence<CatchChain> _catchChains;\n" + 1820 " private ClassMethodActor _classMethodActor;\n" + 1821 "\n" + 1822 " public Sequence<BirBlock> getExceptionDispatchers(final BirBlock[] blockMap) {\n" + 1823 " final ArraySequence<BirBlock> dispatchers = new ArraySequence<BirBlock>(_catchChains.length());\n" + 1824 " for (int i = 0; i < _catchChains.length(); i++) {\n" + 1825 " final BirBlock dispatcher = blockMap[_catchChains.get(i).dispatcherAddress()];\n" + 1826 " dispatcher.setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" + 1827 " dispatchers.set(i, dispatcher);\n" + 1828 " }\n" + 1829 " for (ExceptionHandlerInfo exceptionHandlerInfo : _classMethodActor.exceptionHandlerInfos()) {\n" + 1830 " blockMap[exceptionHandlerInfo.handlerProgramCounter()].setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" + 1831 " }\n" + 1832 " return dispatchers;\n" + 1833 " }\n" + 1834 " public static void main(String[] args) {\n" + 1835 " System.out.print(\"SUCCESS\");\n" + 1836 " }\n" + 1837 "}", 1838 }, 1839 "SUCCESS"); 1840 } 1841 test019()1842 public void test019() { 1843 this.runConformTest( 1844 new String[] { 1845 "X.java", 1846 "final public class X\n" + 1847 "{\n" + 1848 " final class MyClass\n" + 1849 " {\n" + 1850 " void method1(final String s)\n" + 1851 " {\n" + 1852 " }\n" + 1853 " }\n" + 1854 "\n" + 1855 " Object method1()\n" + 1856 " {\n" + 1857 " try\n" + 1858 " {\n" + 1859 " final MyClass myClass = null;\n" + 1860 "\n" + 1861 " try\n" + 1862 " {\n" + 1863 " return null;\n" + 1864 " }\n" + 1865 " catch (final Throwable ex)\n" + 1866 " {\n" + 1867 " myClass.method1(this == null ? \"\" : \"\");\n" + 1868 " }\n" + 1869 "\n" + 1870 " return null;\n" + 1871 " }\n" + 1872 " finally\n" + 1873 " {\n" + 1874 " {\n" + 1875 " }\n" + 1876 " }\n" + 1877 " }\n" + 1878 " public static void main(String[] args) {\n" + 1879 " System.out.print(\"SUCCESS\");\n" + 1880 " }\n" + 1881 "}", 1882 }, 1883 "SUCCESS"); 1884 } test020()1885 public void test020() { 1886 this.runConformTest( 1887 new String[] { 1888 "X.java", 1889 "import java.util.*;\n" + 1890 "public class X {\n" + 1891 " public static Map make(boolean sorted) {\n" + 1892 " return (sorted) ? new TreeMap() : new HashMap();\n" + 1893 " }\n" + 1894 " public static void main(String[] args) {\n" + 1895 " make(false);\n" + 1896 " System.out.print(\"SUCCESS\");\n" + 1897 " }\n" + 1898 "}", 1899 }, 1900 "SUCCESS"); 1901 } 1902 // 155423 test021()1903 public void test021() throws Exception { 1904 this.runConformTest( 1905 new String[] { 1906 "X.java", 1907 "public class X {\n" + 1908 " {\n" + 1909 " if (true) throw new NullPointerException();\n" + 1910 " }\n" + 1911 " X() {\n" + 1912 " System.out.println();\n" + 1913 " }\n" + 1914 "}", 1915 }, 1916 ""); 1917 1918 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 1919 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 1920 String actualOutput = 1921 disassembler.disassemble( 1922 classFileBytes, 1923 "\n", 1924 ClassFileBytesDisassembler.DETAILED); 1925 1926 String expectedOutput = 1927 " // Method descriptor #6 ()V\n" + 1928 " // Stack: 2, Locals: 1\n" + 1929 " X();\n" + 1930 " 0 aload_0 [this]\n" + 1931 " 1 invokespecial java.lang.Object() [8]\n" + 1932 " 4 new java.lang.NullPointerException [10]\n" + 1933 " 7 dup\n" + 1934 " 8 invokespecial java.lang.NullPointerException() [12]\n" + 1935 " 11 athrow\n" + 1936 " Line numbers:\n" + 1937 " [pc: 0, line: 5]\n" + 1938 " [pc: 4, line: 3]\n" + 1939 " Local variable table:\n" + 1940 " [pc: 0, pc: 12] local: this index: 0 type: X\n"; 1941 1942 int index = actualOutput.indexOf(expectedOutput); 1943 if (index == -1 || expectedOutput.length() == 0) { 1944 System.out.println(Util.displayString(actualOutput, 2)); 1945 } 1946 if (index == -1) { 1947 assertEquals("Wrong contents", expectedOutput, actualOutput); 1948 } 1949 } 1950 1951 // 157247 test022()1952 public void test022() { 1953 this.runConformTest( 1954 new String[] { 1955 "X.java", 1956 "public class X {\n" + 1957 " public static void main(String[] args) {\n" + 1958 " String errorMessage;\n" + 1959 " try {\n" + 1960 " foo();\n" + 1961 " errorMessage = \"No exception thrown\";\n" + 1962 " } catch (Exception e) {\n" + 1963 " if (e instanceof NullPointerException) {\n" + 1964 " System.out.println(\"SUCCESS\");\n" + 1965 " return;\n" + 1966 " }\n" + 1967 " errorMessage = \"Exception thrown\" + e;\n" + 1968 " }\n" + 1969 " System.out.println(errorMessage);\n" + 1970 " }\n" + 1971 " public static void foo() {\n" + 1972 " throw new NullPointerException();\n" + 1973 " }\n" + 1974 "}", 1975 }, 1976 "SUCCESS"); 1977 } 1978 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=162965 test023()1979 public void test023() { 1980 this.runConformTest( 1981 new String[] { 1982 "X.java", 1983 "public class X {\n" + 1984 " public static void main(String[] args) {\n" + 1985 " boolean a = true, x;\n" + 1986 " if (a ? false : (x = true))\n" + 1987 " a = x;\n" + 1988 " System.out.println(\"SUCCESS\");\n" + 1989 " }\n" + 1990 "}", 1991 }, 1992 "SUCCESS"); 1993 } 1994 test024()1995 public void test024() { 1996 this.runConformTest( 1997 new String[] { 1998 "X.java", 1999 "public class X {\n" + 2000 " public static final int MAX_PROPERTIES = 25;\n" + 2001 " public C c = new C();\n" + 2002 " void foo(int i) {\n" + 2003 " final int len = c.foo2();\n" + 2004 " A f = new A(\" Test \", i, 1, MAX_PROPERTIES) {\n" + 2005 " @Override\n" + 2006 " public double bar() {\n" + 2007 " return len;\n" + 2008 " }\n" + 2009 " @Override\n" + 2010 " public String toString() {\n" + 2011 " return \"SUCCESS\";\n" + 2012 " }\n" + 2013 " };\n" + 2014 " System.out.println(f);\n" + 2015 " }\n" + 2016 " public static void main(String[] args) {\n" + 2017 " new X().foo(0);\n" + 2018 " }\n" + 2019 "}", 2020 "A.java", 2021 "class A {\n" + 2022 " A(String s, double d, double d1, double d2) {}\n" + 2023 " public double bar() {\n" + 2024 " return 0.0;\n" + 2025 " }\n" + 2026 "}", 2027 "C.java", 2028 "class C {\n" + 2029 " public int foo2() {\n" + 2030 " return 0;\n" + 2031 " }\n" + 2032 "}", 2033 }, 2034 "SUCCESS"); 2035 } 2036 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169596 test025()2037 public void test025() { 2038 this.runConformTest( 2039 new String[] { 2040 "X.java", 2041 "public class X {\n" + 2042 " public static void main(String[] args) {\n" + 2043 " System.out.println(\"SUCCESS\");\n" + 2044 " }\n" + 2045 " \n" + 2046 " void foo(Object[] o) {}\n" + 2047 "\n" + 2048 " void bar(boolean b) {\n" + 2049 " foo(new Object[] {\"\", \"\", b ? \"\" : \"\"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ \n" + 2050 " }\n" + 2051 "}" 2052 }, 2053 "SUCCESS"); 2054 } 2055 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017 test026()2056 public void test026() { 2057 this.runConformTest( 2058 new String[] { 2059 "X.java", 2060 "public class X {\n" + 2061 "\n" + 2062 " public static final Object EXIT_OK = new Object();\n" + 2063 " public static final Object EXIT_RELAUNCH = new Object();\n" + 2064 " public static final Object EXIT_RESTART = new Object();\n" + 2065 " public static final int RETURN_RESTART = 1;\n" + 2066 " public static final String PROP_EXIT_CODE = \"\";\n" + 2067 " public static void main(String[] args) {\n" + 2068 " System.out.println(\"SUCCESS\");\n" + 2069 " }\n" + 2070 " private static int createAndRunWorkbench(Display display, IDEWorkbenchAdvisor advisor) {\n" + 2071 " return 0;\n" + 2072 " }\n" + 2073 " \n" + 2074 " public Object run(Object args) throws Exception {\n" + 2075 " Display display = createDisplay();\n" + 2076 " try {\n" + 2077 " Shell shell = new Shell(display, SWT.ON_TOP);\n" + 2078 " try {\n" + 2079 " if (!checkInstanceLocation(shell)) {\n" + 2080 " Platform.endSplash();\n" + 2081 " return EXIT_OK;\n" + 2082 " }\n" + 2083 " } finally {\n" + 2084 " if (shell != null) {\n" + 2085 " shell.dispose();\n" + 2086 " }\n" + 2087 " }\n" + 2088 " int returnCode = X.createAndRunWorkbench(display,\n" + 2089 " new IDEWorkbenchAdvisor());\n" + 2090 " if (returnCode != X.RETURN_RESTART) {\n" + 2091 " return EXIT_OK;\n" + 2092 " }\n" + 2093 " return EXIT_RELAUNCH.equals(Integer.getInteger(PROP_EXIT_CODE)) ? EXIT_RELAUNCH\n" + 2094 " : EXIT_RESTART;\n" + 2095 " } finally {\n" + 2096 " if (display != null) {\n" + 2097 " display.dispose();\n" + 2098 " }\n" + 2099 " }\n" + 2100 " }\n" + 2101 " private boolean checkInstanceLocation(Shell shell) {\n" + 2102 " // TODO Auto-generated method stub\n" + 2103 " return false;\n" + 2104 " }\n" + 2105 " private Display createDisplay() {\n" + 2106 " // TODO Auto-generated method stub\n" + 2107 " return null;\n" + 2108 " }\n" + 2109 "}", 2110 "Display.java", 2111 "class Display {\n" + 2112 "\n" + 2113 " public void dispose() {\n" + 2114 " // TODO Auto-generated method stub\n" + 2115 " \n" + 2116 " }\n" + 2117 "}", 2118 "Shell.java", 2119 "class Shell {\n" + 2120 " public Shell(Display display, int i) {\n" + 2121 " // TODO Auto-generated constructor stub\n" + 2122 " }\n" + 2123 "\n" + 2124 " public void dispose() {\n" + 2125 " // TODO Auto-generated method stub\n" + 2126 " \n" + 2127 " }\n" + 2128 "}", 2129 "Platform.java", 2130 "class Platform {\n" + 2131 "\n" + 2132 " public static void endSplash() {\n" + 2133 " // TODO Auto-generated method stub\n" + 2134 " \n" + 2135 " }\n" + 2136 "}", 2137 "SWT.java", 2138 "class SWT {\n" + 2139 " public static final int ON_TOP = 1; \n" + 2140 "}", 2141 "IDEWorkbenchAdvisor.java", 2142 "class IDEWorkbenchAdvisor {\n" + 2143 "}" 2144 }, 2145 "SUCCESS"); 2146 } 2147 2148 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017 test027()2149 public void test027() { 2150 this.runConformTest( 2151 new String[] { 2152 "X.java", 2153 "import java.io.IOException;\n" + 2154 "import java.io.InputStream;\n" + 2155 "public class X {\n" + 2156 " private static final int BUF_SIZE = 8192;\n" + 2157 " public static void main(String[] args) {\n" + 2158 " System.out.println(\"SUCCESS\");\n" + 2159 " }\n" + 2160 " BundleActivator activator;\n" + 2161 " BundleHost bundle;\n" + 2162 " public byte[] getBytes() throws IOException {\n" + 2163 " InputStream in = getInputStream();\n" + 2164 " int length = (int) getSize();\n" + 2165 " byte[] classbytes;\n" + 2166 " int bytesread = 0;\n" + 2167 " int readcount;\n" + 2168 " if (Debug.DEBUG && Debug.DEBUG_LOADER)\n" + 2169 " Debug.println(\" about to read \" + length + \" bytes from \" + getName()); //$NON-NLS-1$ //$NON-NLS-2$\n" + 2170 " try {\n" + 2171 " if (length > 0) {\n" + 2172 " classbytes = new byte[length];\n" + 2173 " for (; bytesread < length; bytesread += readcount) {\n" + 2174 " readcount = in.read(classbytes, bytesread, length - bytesread);\n" + 2175 " if (readcount <= 0)\n" + 2176 " break;\n" + 2177 " }\n" + 2178 " } else {\n" + 2179 " length = BUF_SIZE;\n" + 2180 " classbytes = new byte[length];\n" + 2181 " readloop: while (true) {\n" + 2182 " for (; bytesread < length; bytesread += readcount) {\n" + 2183 " readcount = in.read(classbytes, bytesread, length - bytesread);\n" + 2184 " if (readcount <= 0)\n" + 2185 " break readloop;\n" + 2186 " }\n" + 2187 " byte[] oldbytes = classbytes;\n" + 2188 " length += BUF_SIZE;\n" + 2189 " classbytes = new byte[length];\n" + 2190 " System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" + 2191 " }\n" + 2192 " }\n" + 2193 " if (classbytes.length > bytesread) {\n" + 2194 " byte[] oldbytes = classbytes;\n" + 2195 " classbytes = new byte[bytesread];\n" + 2196 " System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" + 2197 " }\n" + 2198 " } finally {\n" + 2199 " try {\n" + 2200 " in.close();\n" + 2201 " } catch (IOException ee) {\n" + 2202 " // ignore\n" + 2203 " }\n" + 2204 " }\n" + 2205 " return classbytes;\n" + 2206 " }\n" + 2207 " protected void stop(Throwable t) throws BundleException {\n" + 2208 " String clazz = \"\";//(activator == null) ? \"\" : activator.getClass().getName(); //$NON-NLS-1$\n" + 2209 " 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" + 2210 " }\n" + 2211 " private String getName() {\n" + 2212 " // TODO Auto-generated method stub\n" + 2213 " return null;\n" + 2214 " }\n" + 2215 " private int getSize() {\n" + 2216 " // TODO Auto-generated method stub\n" + 2217 " return 0;\n" + 2218 " }\n" + 2219 " private InputStream getInputStream() {\n" + 2220 " // TODO Auto-generated method stub\n" + 2221 " return null;\n" + 2222 " }\n" + 2223 "}", 2224 "Debug.java", 2225 "class Debug {\n" + 2226 " public static final boolean DEBUG = false;\n" + 2227 " public static final boolean DEBUG_LOADER = false;\n" + 2228 " public static final boolean DEBUG_GENERAL = false;\n" + 2229 " public static void println(String string) {\n" + 2230 " // TODO Auto-generated method stub\n" + 2231 " \n" + 2232 " }\n" + 2233 " public static void printStackTrace(Throwable t) {\n" + 2234 " // TODO Auto-generated method stub\n" + 2235 " \n" + 2236 " }\n" + 2237 "}", 2238 "AccessController.java", 2239 "class AccessController {\n" + 2240 " static void doPrivileged(Object o) {\n" + 2241 " }\n" + 2242 "}", 2243 "BundleException.java", 2244 "class BundleException extends Exception {\n" + 2245 " private static final long serialVersionUID = 5758882959559471648L;\n" + 2246 "\n" + 2247 " public BundleException(String bind, Throwable t) {\n" + 2248 " // TODO Auto-generated constructor stub\n" + 2249 " }\n" + 2250 "}", 2251 "PrivilegedExceptionAction.java", 2252 "class PrivilegedExceptionAction {\n" + 2253 "}", 2254 "BundleActivator.java", 2255 "class BundleActivator {\n" + 2256 " public void stop(X x) {\n" + 2257 " // TODO Auto-generated method stub\n" + 2258 " \n" + 2259 " }\n" + 2260 "}", 2261 "BundleHost.java", 2262 "class BundleHost {\n" + 2263 " public Object getSymbolicName() {\n" + 2264 " // TODO Auto-generated method stub\n" + 2265 " return null;\n" + 2266 " }\n" + 2267 " public String getBundleId() {\n" + 2268 " // TODO Auto-generated method stub\n" + 2269 " return null;\n" + 2270 " }\n" + 2271 "}", 2272 "NLS.java", 2273 "class NLS {\n" + 2274 " public static String bind(String bundleActivatorException, Object[] objects) {\n" + 2275 " // TODO Auto-generated method stub\n" + 2276 " return null;\n" + 2277 " }\n" + 2278 "}", 2279 "PrivilegedActionException.java", 2280 "class PrivilegedActionException extends Exception {\n" + 2281 " private static final long serialVersionUID = 3919969055057660822L;\n" + 2282 " public Throwable getException() {\n" + 2283 " // TODO Auto-generated method stub\n" + 2284 " return null;\n" + 2285 " }\n" + 2286 "}", 2287 "Msg.java", 2288 "class Msg {\n" + 2289 " public static final String BUNDLE_ACTIVATOR_EXCEPTION = \"\";\n" + 2290 "}" 2291 }, 2292 "SUCCESS"); 2293 } 2294 2295 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017 test028()2296 public void test028() { 2297 this.runConformTest( 2298 new String[] { 2299 "X.java", 2300 "import java.io.StringReader;\n" + 2301 "\n" + 2302 "public class X {\n" + 2303 " public void loadVariablesAndContainers() {\n" + 2304 " // backward compatibility, consider persistent property \n" + 2305 " String qName = \"1\";\n" + 2306 " String xmlString = \"2\";\n" + 2307 " \n" + 2308 " try {\n" + 2309 " if (xmlString != null){\n" + 2310 " StringReader reader = new StringReader(xmlString);\n" + 2311 " Object o;\n" + 2312 " try {\n" + 2313 " StringBuffer buffer = null;\n" + 2314 " o = new Object();\n" + 2315 " } catch(RuntimeException e) {\n" + 2316 " return;\n" + 2317 " } catch(Exception e){\n" + 2318 " return;\n" + 2319 " } finally {\n" + 2320 " reader.close();\n" + 2321 " }\n" + 2322 " System.out.println(reader);\n" + 2323 " }\n" + 2324 " } catch(Exception e){\n" + 2325 " // problem loading xml file: nothing we can do\n" + 2326 " } finally {\n" + 2327 " if (xmlString != null){\n" + 2328 " System.out.println(xmlString);\n" + 2329 " }\n" + 2330 " }\n" + 2331 " }\n" + 2332 "\n" + 2333 " public static void main(String[] args) {\n" + 2334 " System.out.println(\"SUCCESS\");\n" + 2335 " }\n" + 2336 "}" 2337 }, 2338 "SUCCESS"); 2339 } 2340 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472 test029()2341 public void test029() { 2342 this.runConformTest( 2343 new String[] { 2344 "X.java", 2345 "public class X {\n" + 2346 "\n" + 2347 " public Object foo() {\n" + 2348 " Object status;\n" + 2349 " try {\n" + 2350 " status= bar();\n" + 2351 " } catch (RuntimeException x) {\n" + 2352 " status= foo2(x);\n" + 2353 " } finally {\n" + 2354 " System.out.println();\n" + 2355 " }\n" + 2356 " return status;\n" + 2357 " }\n" + 2358 " public Object bar() {\n" + 2359 " return null;\n" + 2360 " }\n" + 2361 " public Object foo2(Exception e) {\n" + 2362 " return null;\n" + 2363 " }\n" + 2364 " public static void main(String[] args) {\n" + 2365 " System.out.println(\"SUCCESS\");\n" + 2366 " }\n" + 2367 "}" 2368 }, 2369 "SUCCESS"); 2370 } 2371 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472 test030()2372 public void test030() { 2373 this.runConformTest( 2374 new String[] { 2375 "X.java", 2376 "import java.util.Collections;\n" + 2377 "import java.util.List;\n" + 2378 "public class X {\n" + 2379 "\n" + 2380 " private static final String COMPUTE_COMPLETION_PROPOSALS= \"computeCompletionProposals()\"; //$NON-NLS-1$\n" + 2381 " private Object fLastError;\n" + 2382 " private boolean fIsReportingDelay;\n" + 2383 " private CompletionProposalComputerRegistry fRegistry;\n" + 2384 " public List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {\n" + 2385 " if (!isEnabled())\n" + 2386 " return Collections.EMPTY_LIST;\n" + 2387 "\n" + 2388 " IStatus status;\n" + 2389 " try {\n" + 2390 " IJavaCompletionProposalComputer computer= getComputer();\n" + 2391 " if (computer == null) // not active yet\n" + 2392 " return Collections.EMPTY_LIST;\n" + 2393 " \n" + 2394 " try {\n" + 2395 " PerformanceStats stats= startMeter(context, computer);\n" + 2396 " List proposals= computer.computeCompletionProposals(context, monitor);\n" + 2397 " stopMeter(stats, COMPUTE_COMPLETION_PROPOSALS);\n" + 2398 " \n" + 2399 " if (proposals != null) {\n" + 2400 " fLastError= computer.getErrorMessage();\n" + 2401 " return proposals;\n" + 2402 " }\n" + 2403 " } finally {\n" + 2404 " fIsReportingDelay= true;\n" + 2405 " }\n" + 2406 " status= createAPIViolationStatus(COMPUTE_COMPLETION_PROPOSALS);\n" + 2407 " } catch (InvalidRegistryObjectException x) {\n" + 2408 " status= createExceptionStatus(x);\n" + 2409 " } catch (CoreException x) {\n" + 2410 " status= createExceptionStatus(x);\n" + 2411 " } catch (RuntimeException x) {\n" + 2412 " status= createExceptionStatus(x);\n" + 2413 " } finally {\n" + 2414 " monitor.done();\n" + 2415 " }\n" + 2416 "\n" + 2417 " fRegistry.informUser(this, status);\n" + 2418 "\n" + 2419 " return Collections.EMPTY_LIST;\n" + 2420 " }\n" + 2421 "\n" + 2422 " private IStatus createExceptionStatus(Exception x) {\n" + 2423 " // TODO Auto-generated method stub\n" + 2424 " return null;\n" + 2425 " }\n" + 2426 "\n" + 2427 " private IStatus createAPIViolationStatus(String computeCompletionProposals) {\n" + 2428 " // TODO Auto-generated method stub\n" + 2429 " return null;\n" + 2430 " }\n" + 2431 "\n" + 2432 " private void stopMeter(PerformanceStats stats, String computeCompletionProposals) {\n" + 2433 " // TODO Auto-generated method stub\n" + 2434 " \n" + 2435 " }\n" + 2436 "\n" + 2437 " private PerformanceStats startMeter(ContentAssistInvocationContext context, IJavaCompletionProposalComputer computer) {\n" + 2438 " // TODO Auto-generated method stub\n" + 2439 " return null;\n" + 2440 " }\n" + 2441 "\n" + 2442 " private IJavaCompletionProposalComputer getComputer() throws CoreException, InvalidRegistryObjectException {\n" + 2443 " // TODO Auto-generated method stub\n" + 2444 " return null;\n" + 2445 " }\n" + 2446 "\n" + 2447 " private boolean isEnabled() {\n" + 2448 " // TODO Auto-generated method stub\n" + 2449 " return false;\n" + 2450 " }\n" + 2451 " \n" + 2452 " public static void main(String[] args) {\n" + 2453 " System.out.println(\"SUCCESS\");\n" + 2454 " }\n" + 2455 "}", 2456 "IProgressMonitor.java", 2457 "interface IProgressMonitor {\n" + 2458 " void done();\n" + 2459 "}", 2460 "ContentAssistInvocationContext.java", 2461 "class ContentAssistInvocationContext {\n" + 2462 "}", 2463 "IStatus.java", 2464 "interface IStatus {}", 2465 "IJavaCompletionProposalComputer.java", 2466 "import java.util.List;\n" + 2467 "interface IJavaCompletionProposalComputer {\n" + 2468 " List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor);\n" + 2469 " Object getErrorMessage();\n" + 2470 "}", 2471 "PerformanceStats.java", 2472 "class PerformanceStats {}", 2473 "CompletionProposalComputerRegistry.java", 2474 "class CompletionProposalComputerRegistry {\n" + 2475 " public void informUser(X x, IStatus status) {\n" + 2476 " }\n" + 2477 "}", 2478 "InvalidRegistryObjectException.java", 2479 "class InvalidRegistryObjectException extends Exception {\n" + 2480 " private static final long serialVersionUID = 8943194846421947853L;\n" + 2481 "}", 2482 "CoreException.java", 2483 "class CoreException extends Exception {\n" + 2484 " private static final long serialVersionUID = 3996792687633449517L;\n" + 2485 "}" 2486 }, 2487 "SUCCESS"); 2488 } 2489 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=168665 test031()2490 public void test031() { 2491 this.runConformTest( 2492 new String[] { 2493 "X.java", 2494 "public class X {\n" + 2495 " String s;\n" + 2496 " X() {\n" + 2497 " this.s = \"\";\n" + 2498 " }\n" + 2499 " X(String s, double d, double d2, double i) {\n" + 2500 " this.s = s;\n" + 2501 " }\n" + 2502 " public static final int CONST = 1;\n" + 2503 " public int foo() {\n" + 2504 " return 0;\n" + 2505 " }\n" + 2506 " public double value(double d1) {\n" + 2507 " return d1;\n" + 2508 " }\n" + 2509 " public void bar(int start) {\n" + 2510 " final int len = foo();\n" + 2511 " X x = new X(\"SUCCESS\", start, 1, CONST) {\n" + 2512 " @Override\n" + 2513 " public double value(double newValue) {\n" + 2514 " return len;\n" + 2515 " }\n" + 2516 " };\n" + 2517 " System.out.println(x);\n" + 2518 " }\n" + 2519 " public static void main(String[] args) {\n" + 2520 " new X().bar(1);\n" + 2521 " }\n" + 2522 " public String toString() {\n" + 2523 " return this.s;\n" + 2524 " }\n" + 2525 "}", 2526 }, 2527 "SUCCESS"); 2528 } test032()2529 public void test032() { 2530 this.runConformTest( 2531 new String[] { 2532 "X.java", 2533 "public class X {\n" + 2534 " public static void main(String[] args) {\n" + 2535 " int i = args.length;\n" + 2536 " X[] array = new X[] { i == 0 ? null : null };\n" + 2537 " System.out.print(\"SUCCESS\" + array.length);\n" + 2538 " }\n" + 2539 "}", 2540 }, 2541 "SUCCESS1"); 2542 } 2543 2544 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102 test033()2545 public void test033() { 2546 this.runConformTest( 2547 new String[] { 2548 "X.java", 2549 "public enum X {\n" + 2550 " C { @Override public boolean test() { return true; } };\n" + 2551 " static {\n" + 2552 " for (int i = 0; i < 1; i++) {}\n" + 2553 " }\n" + 2554 " public boolean test() {\n" + 2555 " return false;\n" + 2556 " }\n" + 2557 " public static void main(String[] args) {\n" + 2558 " System.out.print(\"SUCCESS\");\n" + 2559 " }\n" + 2560 "}", 2561 }, 2562 "SUCCESS"); 2563 } 2564 2565 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102 test034()2566 public void test034() { 2567 this.runConformTest( 2568 new String[] { 2569 "X.java", 2570 "public enum X {\n" + 2571 " C;\n" + 2572 " static {\n" + 2573 " for (int i = 0; i < 1; i++) {}\n" + 2574 " }\n" + 2575 " public boolean test() {\n" + 2576 " return false;\n" + 2577 " }\n" + 2578 " public static void main(String[] args) {\n" + 2579 " System.out.print(\"SUCCESS\");\n" + 2580 " }\n" + 2581 "}", 2582 }, 2583 "SUCCESS"); 2584 } 2585 2586 // add more bytecode coverage: fneg, lneg, dneg, dstore_0, f2l, fstore_0, fstore_2, lstore_0 and saload test035()2587 public void test035() { 2588 this.runConformTest( 2589 new String[] { 2590 "X.java", 2591 "public class X {\n" + 2592 " static double foo() {\n" + 2593 " double d = 3.0;\n" + 2594 " d = -d;\n" + 2595 " return d > 1.0 ? d : -d;\n" + 2596 " }\n" + 2597 "\n" + 2598 " static float foo2() {\n" + 2599 " float f = 3.0f;\n" + 2600 " int i = 0;\n" + 2601 " float f2 = f+ i;\n" + 2602 " long l = (long) f;\n" + 2603 " l += f2;\n" + 2604 " return i == 0 ? f : -f + (float) l;\n" + 2605 " }\n" + 2606 "\n" + 2607 " static long foo3() {\n" + 2608 " long l = Long.MAX_VALUE - 3;\n" + 2609 " boolean b = true;\n" + 2610 " return b ? l : -l;\n" + 2611 " }\n" + 2612 " \n" + 2613 " static short foo4() {\n" + 2614 " short[] tab = new short[] { 1, 2, 3 };\n" + 2615 " return tab.length == 3 ? tab[2] : (tab.length == 2 ? tab[1] : tab[0]);\n" + 2616 " }\n" + 2617 "\n" + 2618 " public static void main(String args[]) {\n" + 2619 " foo();\n" + 2620 " foo2();\n" + 2621 " foo3();\n" + 2622 " foo4();\n" + 2623 " System.out.print(\"SUCCESS\");\n" + 2624 " }\n" + 2625 "}", 2626 }, 2627 "SUCCESS"); 2628 } 2629 2630 // fix verify error test036()2631 public void test036() { 2632 this.runConformTest( 2633 new String[] { 2634 "X.java", 2635 "import java.util.Map;\n" + 2636 "import java.util.Set;\n" + 2637 "\n" + 2638 "public class X {\n" + 2639 " public static void main(String[] args) {\n" + 2640 " System.out.print(\"SUCCESS\");\n" + 2641 " }\n" + 2642 " public void foo(Object o, boolean b) {\n" + 2643 " String[] models = new String[] {};\n" + 2644 " Map map = null;\n" + 2645 " Set set = null;\n" + 2646 " for (int n = 0; n < models.length; n++) { bar(models[n]); }\n" + 2647 " foo2(new Object(),\n" + 2648 " set,\n" + 2649 " map,\n" + 2650 " !b);\n" + 2651 " }\n" + 2652 " void bar(String s) {}\n" + 2653 " void foo2(Object o, Object s, Object m, boolean b) {}\n" + 2654 "}", 2655 }, 2656 "SUCCESS"); 2657 } 2658 2659 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236336 test037()2660 public void test037() { 2661 this.runConformTest( 2662 new String[] { 2663 "X.java", 2664 "public class X {\n" + 2665 " public static void main(String[] args) {\n" + 2666 " System.out.print(\"SUCCESS\");\n" + 2667 " }\n" + 2668 " String field;\n" + 2669 " String field2;\n" + 2670 " public void foo(int index, Object[] objs, Object[] objs2) {\n" + 2671 " String methodName = \"foo\";\n" + 2672 " int i = -1;\n" + 2673 " try {\n" + 2674 " switch (index) {\n" + 2675 " case 1130: {\n" + 2676 " int j = ((Integer) objs[0]).intValue();\n" + 2677 " int k = ((Integer) objs[0]).intValue();\n" + 2678 " {\n" + 2679 " String s = field;\n" + 2680 " String s2 = field2;\n" + 2681 " synchronized (s2) {\n" + 2682 " String s3 = s2;\n" + 2683 " try {\n" + 2684 " System.out.println(s);\n" + 2685 " System.out.println(s2);\n" + 2686 " System.out.println(s3);\n" + 2687 " } finally {\n" + 2688 " s2.toString();\n" + 2689 " }\n" + 2690 " }\n" + 2691 " }\n" + 2692 " }\n" + 2693 " break;\n" + 2694 " case 0 :\n" + 2695 " System.out.println(methodName + i);\n" + 2696 " break;\n" + 2697 " case 1 :\n" + 2698 " System.out.println(methodName + i);\n" + 2699 " break;\n" + 2700 " case 2 :\n" + 2701 " System.out.println(methodName + i);\n" + 2702 " break;\n" + 2703 " case 3 :\n" + 2704 " System.out.println(methodName + i);\n" + 2705 " break;\n" + 2706 " case 4 :\n" + 2707 " System.out.println(methodName + i);\n" + 2708 " break;\n" + 2709 " case 5 :\n" + 2710 " System.out.println(methodName + i);\n" + 2711 " break;\n" + 2712 " case 6 :\n" + 2713 " System.out.println(methodName + i);\n" + 2714 " break;\n" + 2715 " case 7 :\n" + 2716 " System.out.println(methodName + i);\n" + 2717 " break;\n" + 2718 " case 8 :\n" + 2719 " System.out.println(methodName + i);\n" + 2720 " break;\n" + 2721 " case 9 :\n" + 2722 " System.out.println(methodName + i);\n" + 2723 " break;\n" + 2724 " case 10 :\n" + 2725 " System.out.println(methodName + i);\n" + 2726 " break;\n" + 2727 " case 11 :\n" + 2728 " System.out.println(methodName + i);\n" + 2729 " break;\n" + 2730 " case 12 :\n" + 2731 " System.out.println(methodName + i);\n" + 2732 " break;\n" + 2733 " case 13 :\n" + 2734 " System.out.println(methodName + i);\n" + 2735 " break;\n" + 2736 " case 14 :\n" + 2737 " System.out.println(methodName + i);\n" + 2738 " break;\n" + 2739 " case 15 :\n" + 2740 " System.out.println(methodName + i);\n" + 2741 " break;\n" + 2742 " case 16 :\n" + 2743 " System.out.println(methodName + i);\n" + 2744 " break;\n" + 2745 " case 17 :\n" + 2746 " System.out.println(methodName + i);\n" + 2747 " break;\n" + 2748 " case 18 :\n" + 2749 " System.out.println(methodName + i);\n" + 2750 " break;\n" + 2751 " case 19 :\n" + 2752 " System.out.println(methodName + i);\n" + 2753 " break;\n" + 2754 " case 20 :\n" + 2755 " System.out.println(methodName + i);\n" + 2756 " break;\n" + 2757 " case 21 :\n" + 2758 " System.out.println(methodName + i);\n" + 2759 " break;\n" + 2760 " case 22 :\n" + 2761 " System.out.println(methodName + i);\n" + 2762 " break;\n" + 2763 " case 23 :\n" + 2764 " System.out.println(methodName + i);\n" + 2765 " break;\n" + 2766 " case 24 :\n" + 2767 " System.out.println(methodName + i);\n" + 2768 " break;\n" + 2769 " case 25 :\n" + 2770 " System.out.println(methodName + i);\n" + 2771 " break;\n" + 2772 " case 26 :\n" + 2773 " System.out.println(methodName + i);\n" + 2774 " break;\n" + 2775 " case 27 :\n" + 2776 " System.out.println(methodName + i);\n" + 2777 " break;\n" + 2778 " case 28 :\n" + 2779 " System.out.println(methodName + i);\n" + 2780 " break;\n" + 2781 " case 29 :\n" + 2782 " System.out.println(methodName + i);\n" + 2783 " break;\n" + 2784 " case 30 :\n" + 2785 " System.out.println(methodName + i);\n" + 2786 " break;\n" + 2787 " case 31 :\n" + 2788 " System.out.println(methodName + i);\n" + 2789 " break;\n" + 2790 " case 32 :\n" + 2791 " System.out.println(methodName + i);\n" + 2792 " break;\n" + 2793 " case 33 :\n" + 2794 " System.out.println(methodName + i);\n" + 2795 " break;\n" + 2796 " case 34 :\n" + 2797 " System.out.println(methodName + i);\n" + 2798 " break;\n" + 2799 " case 35 :\n" + 2800 " System.out.println(methodName + i);\n" + 2801 " break;\n" + 2802 " case 36 :\n" + 2803 " System.out.println(methodName + i);\n" + 2804 " break;\n" + 2805 " case 37 :\n" + 2806 " System.out.println(methodName + i);\n" + 2807 " break;\n" + 2808 " case 38 :\n" + 2809 " System.out.println(methodName + i);\n" + 2810 " break;\n" + 2811 " case 39 :\n" + 2812 " System.out.println(methodName + i);\n" + 2813 " break;\n" + 2814 " case 40 :\n" + 2815 " System.out.println(methodName + i);\n" + 2816 " break;\n" + 2817 " case 41 :\n" + 2818 " System.out.println(methodName + i);\n" + 2819 " break;\n" + 2820 " case 42 :\n" + 2821 " System.out.println(methodName + i);\n" + 2822 " break;\n" + 2823 " case 43 :\n" + 2824 " System.out.println(methodName + i);\n" + 2825 " break;\n" + 2826 " case 44 :\n" + 2827 " System.out.println(methodName + i);\n" + 2828 " break;\n" + 2829 " case 45 :\n" + 2830 " System.out.println(methodName + i);\n" + 2831 " break;\n" + 2832 " case 46 :\n" + 2833 " System.out.println(methodName + i);\n" + 2834 " break;\n" + 2835 " case 47 :\n" + 2836 " System.out.println(methodName + i);\n" + 2837 " break;\n" + 2838 " case 48 :\n" + 2839 " System.out.println(methodName + i);\n" + 2840 " break;\n" + 2841 " case 49 :\n" + 2842 " System.out.println(methodName + i);\n" + 2843 " break;\n" + 2844 " case 50 :\n" + 2845 " System.out.println(methodName + i);\n" + 2846 " break;\n" + 2847 " case 51 :\n" + 2848 " System.out.println(methodName + i);\n" + 2849 " break;\n" + 2850 " case 52 :\n" + 2851 " System.out.println(methodName + i);\n" + 2852 " break;\n" + 2853 " case 53 :\n" + 2854 " System.out.println(methodName + i);\n" + 2855 " break;\n" + 2856 " case 54 :\n" + 2857 " System.out.println(methodName + i);\n" + 2858 " break;\n" + 2859 " case 55 :\n" + 2860 " System.out.println(methodName + i);\n" + 2861 " break;\n" + 2862 " case 56 :\n" + 2863 " System.out.println(methodName + i);\n" + 2864 " break;\n" + 2865 " case 57 :\n" + 2866 " System.out.println(methodName + i);\n" + 2867 " break;\n" + 2868 " case 58 :\n" + 2869 " System.out.println(methodName + i);\n" + 2870 " break;\n" + 2871 " case 59 :\n" + 2872 " System.out.println(methodName + i);\n" + 2873 " break;\n" + 2874 " case 60 :\n" + 2875 " System.out.println(methodName + i);\n" + 2876 " break;\n" + 2877 " case 61 :\n" + 2878 " System.out.println(methodName + i);\n" + 2879 " break;\n" + 2880 " case 62 :\n" + 2881 " System.out.println(methodName + i);\n" + 2882 " break;\n" + 2883 " case 63 :\n" + 2884 " System.out.println(methodName + i);\n" + 2885 " break;\n" + 2886 " case 64 :\n" + 2887 " System.out.println(methodName + i);\n" + 2888 " break;\n" + 2889 " case 65 :\n" + 2890 " System.out.println(methodName + i);\n" + 2891 " break;\n" + 2892 " case 66 :\n" + 2893 " System.out.println(methodName + i);\n" + 2894 " break;\n" + 2895 " case 67 :\n" + 2896 " System.out.println(methodName + i);\n" + 2897 " break;\n" + 2898 " case 68 :\n" + 2899 " System.out.println(methodName + i);\n" + 2900 " break;\n" + 2901 " case 69 :\n" + 2902 " System.out.println(methodName + i);\n" + 2903 " break;\n" + 2904 " case 70 :\n" + 2905 " System.out.println(methodName + i);\n" + 2906 " break;\n" + 2907 " case 71 :\n" + 2908 " System.out.println(methodName + i);\n" + 2909 " break;\n" + 2910 " case 72 :\n" + 2911 " System.out.println(methodName + i);\n" + 2912 " break;\n" + 2913 " case 73 :\n" + 2914 " System.out.println(methodName + i);\n" + 2915 " break;\n" + 2916 " case 74 :\n" + 2917 " System.out.println(methodName + i);\n" + 2918 " break;\n" + 2919 " case 75 :\n" + 2920 " System.out.println(methodName + i);\n" + 2921 " break;\n" + 2922 " case 76 :\n" + 2923 " System.out.println(methodName + i);\n" + 2924 " break;\n" + 2925 " case 77 :\n" + 2926 " System.out.println(methodName + i);\n" + 2927 " break;\n" + 2928 " case 78 :\n" + 2929 " System.out.println(methodName + i);\n" + 2930 " break;\n" + 2931 " case 79 :\n" + 2932 " System.out.println(methodName + i);\n" + 2933 " break;\n" + 2934 " case 80 :\n" + 2935 " System.out.println(methodName + i);\n" + 2936 " break;\n" + 2937 " case 81 :\n" + 2938 " System.out.println(methodName + i);\n" + 2939 " break;\n" + 2940 " case 82 :\n" + 2941 " System.out.println(methodName + i);\n" + 2942 " break;\n" + 2943 " case 83 :\n" + 2944 " System.out.println(methodName + i);\n" + 2945 " break;\n" + 2946 " case 84 :\n" + 2947 " System.out.println(methodName + i);\n" + 2948 " break;\n" + 2949 " case 85 :\n" + 2950 " System.out.println(methodName + i);\n" + 2951 " break;\n" + 2952 " case 86 :\n" + 2953 " System.out.println(methodName + i);\n" + 2954 " break;\n" + 2955 " case 87 :\n" + 2956 " System.out.println(methodName + i);\n" + 2957 " break;\n" + 2958 " case 88 :\n" + 2959 " System.out.println(methodName + i);\n" + 2960 " break;\n" + 2961 " case 89 :\n" + 2962 " System.out.println(methodName + i);\n" + 2963 " break;\n" + 2964 " case 90 :\n" + 2965 " System.out.println(methodName + i);\n" + 2966 " break;\n" + 2967 " case 91 :\n" + 2968 " System.out.println(methodName + i);\n" + 2969 " break;\n" + 2970 " case 92 :\n" + 2971 " System.out.println(methodName + i);\n" + 2972 " break;\n" + 2973 " case 93 :\n" + 2974 " System.out.println(methodName + i);\n" + 2975 " break;\n" + 2976 " case 94 :\n" + 2977 " System.out.println(methodName + i);\n" + 2978 " break;\n" + 2979 " case 95 :\n" + 2980 " System.out.println(methodName + i);\n" + 2981 " break;\n" + 2982 " case 96 :\n" + 2983 " System.out.println(methodName + i);\n" + 2984 " break;\n" + 2985 " case 97 :\n" + 2986 " System.out.println(methodName + i);\n" + 2987 " break;\n" + 2988 " case 98 :\n" + 2989 " System.out.println(methodName + i);\n" + 2990 " break;\n" + 2991 " case 99 :\n" + 2992 " System.out.println(methodName + i);\n" + 2993 " break;\n" + 2994 " case 100 :\n" + 2995 " System.out.println(methodName + i);\n" + 2996 " break;\n" + 2997 " case 101 :\n" + 2998 " System.out.println(methodName + i);\n" + 2999 " break;\n" + 3000 " case 102 :\n" + 3001 " System.out.println(methodName + i);\n" + 3002 " break;\n" + 3003 " case 103 :\n" + 3004 " System.out.println(methodName + i);\n" + 3005 " break;\n" + 3006 " case 104 :\n" + 3007 " System.out.println(methodName + i);\n" + 3008 " break;\n" + 3009 " case 105 :\n" + 3010 " System.out.println(methodName + i);\n" + 3011 " break;\n" + 3012 " case 106 :\n" + 3013 " System.out.println(methodName + i);\n" + 3014 " break;\n" + 3015 " case 107 :\n" + 3016 " System.out.println(methodName + i);\n" + 3017 " break;\n" + 3018 " case 108 :\n" + 3019 " System.out.println(methodName + i);\n" + 3020 " break;\n" + 3021 " case 109 :\n" + 3022 " System.out.println(methodName + i);\n" + 3023 " break;\n" + 3024 " case 110 :\n" + 3025 " System.out.println(methodName + i);\n" + 3026 " break;\n" + 3027 " case 111 :\n" + 3028 " System.out.println(methodName + i);\n" + 3029 " break;\n" + 3030 " case 112 :\n" + 3031 " System.out.println(methodName + i);\n" + 3032 " break;\n" + 3033 " case 113 :\n" + 3034 " System.out.println(methodName + i);\n" + 3035 " break;\n" + 3036 " case 114 :\n" + 3037 " System.out.println(methodName + i);\n" + 3038 " break;\n" + 3039 " case 115 :\n" + 3040 " System.out.println(methodName + i);\n" + 3041 " break;\n" + 3042 " case 116 :\n" + 3043 " System.out.println(methodName + i);\n" + 3044 " break;\n" + 3045 " case 117 :\n" + 3046 " System.out.println(methodName + i);\n" + 3047 " break;\n" + 3048 " case 118 :\n" + 3049 " System.out.println(methodName + i);\n" + 3050 " break;\n" + 3051 " case 119 :\n" + 3052 " System.out.println(methodName + i);\n" + 3053 " break;\n" + 3054 " case 120 :\n" + 3055 " System.out.println(methodName + i);\n" + 3056 " break;\n" + 3057 " case 121 :\n" + 3058 " System.out.println(methodName + i);\n" + 3059 " break;\n" + 3060 " case 122 :\n" + 3061 " System.out.println(methodName + i);\n" + 3062 " break;\n" + 3063 " case 123 :\n" + 3064 " System.out.println(methodName + i);\n" + 3065 " break;\n" + 3066 " case 124 :\n" + 3067 " System.out.println(methodName + i);\n" + 3068 " break;\n" + 3069 " case 125 :\n" + 3070 " System.out.println(methodName + i);\n" + 3071 " break;\n" + 3072 " case 126 :\n" + 3073 " System.out.println(methodName + i);\n" + 3074 " break;\n" + 3075 " case 127 :\n" + 3076 " System.out.println(methodName + i);\n" + 3077 " break;\n" + 3078 " case 128 :\n" + 3079 " System.out.println(methodName + i);\n" + 3080 " break;\n" + 3081 " case 129 :\n" + 3082 " System.out.println(methodName + i);\n" + 3083 " break;\n" + 3084 " case 130 :\n" + 3085 " System.out.println(methodName + i);\n" + 3086 " break;\n" + 3087 " case 131 :\n" + 3088 " System.out.println(methodName + i);\n" + 3089 " break;\n" + 3090 " case 132 :\n" + 3091 " System.out.println(methodName + i);\n" + 3092 " break;\n" + 3093 " case 133 :\n" + 3094 " System.out.println(methodName + i);\n" + 3095 " break;\n" + 3096 " case 134 :\n" + 3097 " System.out.println(methodName + i);\n" + 3098 " break;\n" + 3099 " case 135 :\n" + 3100 " System.out.println(methodName + i);\n" + 3101 " break;\n" + 3102 " case 136 :\n" + 3103 " System.out.println(methodName + i);\n" + 3104 " break;\n" + 3105 " case 137 :\n" + 3106 " System.out.println(methodName + i);\n" + 3107 " break;\n" + 3108 " case 138 :\n" + 3109 " System.out.println(methodName + i);\n" + 3110 " break;\n" + 3111 " case 139 :\n" + 3112 " System.out.println(methodName + i);\n" + 3113 " break;\n" + 3114 " case 140 :\n" + 3115 " System.out.println(methodName + i);\n" + 3116 " break;\n" + 3117 " case 141 :\n" + 3118 " System.out.println(methodName + i);\n" + 3119 " break;\n" + 3120 " case 142 :\n" + 3121 " System.out.println(methodName + i);\n" + 3122 " break;\n" + 3123 " case 143 :\n" + 3124 " System.out.println(methodName + i);\n" + 3125 " break;\n" + 3126 " case 144 :\n" + 3127 " System.out.println(methodName + i);\n" + 3128 " break;\n" + 3129 " case 145 :\n" + 3130 " System.out.println(methodName + i);\n" + 3131 " break;\n" + 3132 " case 146 :\n" + 3133 " System.out.println(methodName + i);\n" + 3134 " break;\n" + 3135 " case 147 :\n" + 3136 " System.out.println(methodName + i);\n" + 3137 " break;\n" + 3138 " case 148 :\n" + 3139 " System.out.println(methodName + i);\n" + 3140 " break;\n" + 3141 " case 149 :\n" + 3142 " System.out.println(methodName + i);\n" + 3143 " break;\n" + 3144 " case 150 :\n" + 3145 " System.out.println(methodName + i);\n" + 3146 " break;\n" + 3147 " case 151 :\n" + 3148 " System.out.println(methodName + i);\n" + 3149 " break;\n" + 3150 " case 152 :\n" + 3151 " System.out.println(methodName + i);\n" + 3152 " break;\n" + 3153 " case 153 :\n" + 3154 " System.out.println(methodName + i);\n" + 3155 " break;\n" + 3156 " case 154 :\n" + 3157 " System.out.println(methodName + i);\n" + 3158 " break;\n" + 3159 " case 155 :\n" + 3160 " System.out.println(methodName + i);\n" + 3161 " break;\n" + 3162 " case 156 :\n" + 3163 " System.out.println(methodName + i);\n" + 3164 " break;\n" + 3165 " case 157 :\n" + 3166 " System.out.println(methodName + i);\n" + 3167 " break;\n" + 3168 " case 158 :\n" + 3169 " System.out.println(methodName + i);\n" + 3170 " break;\n" + 3171 " case 159 :\n" + 3172 " System.out.println(methodName + i);\n" + 3173 " break;\n" + 3174 " case 160 :\n" + 3175 " System.out.println(methodName + i);\n" + 3176 " break;\n" + 3177 " case 161 :\n" + 3178 " System.out.println(methodName + i);\n" + 3179 " break;\n" + 3180 " case 162 :\n" + 3181 " System.out.println(methodName + i);\n" + 3182 " break;\n" + 3183 " case 163 :\n" + 3184 " System.out.println(methodName + i);\n" + 3185 " break;\n" + 3186 " case 164 :\n" + 3187 " System.out.println(methodName + i);\n" + 3188 " break;\n" + 3189 " case 165 :\n" + 3190 " System.out.println(methodName + i);\n" + 3191 " break;\n" + 3192 " case 166 :\n" + 3193 " System.out.println(methodName + i);\n" + 3194 " break;\n" + 3195 " case 167 :\n" + 3196 " System.out.println(methodName + i);\n" + 3197 " break;\n" + 3198 " case 168 :\n" + 3199 " System.out.println(methodName + i);\n" + 3200 " break;\n" + 3201 " case 169 :\n" + 3202 " System.out.println(methodName + i);\n" + 3203 " break;\n" + 3204 " case 170 :\n" + 3205 " System.out.println(methodName + i);\n" + 3206 " break;\n" + 3207 " case 171 :\n" + 3208 " System.out.println(methodName + i);\n" + 3209 " break;\n" + 3210 " case 172 :\n" + 3211 " System.out.println(methodName + i);\n" + 3212 " break;\n" + 3213 " case 173 :\n" + 3214 " System.out.println(methodName + i);\n" + 3215 " break;\n" + 3216 " case 174 :\n" + 3217 " System.out.println(methodName + i);\n" + 3218 " break;\n" + 3219 " case 175 :\n" + 3220 " System.out.println(methodName + i);\n" + 3221 " break;\n" + 3222 " case 176 :\n" + 3223 " System.out.println(methodName + i);\n" + 3224 " break;\n" + 3225 " case 177 :\n" + 3226 " System.out.println(methodName + i);\n" + 3227 " break;\n" + 3228 " case 178 :\n" + 3229 " System.out.println(methodName + i);\n" + 3230 " break;\n" + 3231 " case 179 :\n" + 3232 " System.out.println(methodName + i);\n" + 3233 " break;\n" + 3234 " case 180 :\n" + 3235 " System.out.println(methodName + i);\n" + 3236 " break;\n" + 3237 " case 181 :\n" + 3238 " System.out.println(methodName + i);\n" + 3239 " break;\n" + 3240 " case 182 :\n" + 3241 " System.out.println(methodName + i);\n" + 3242 " break;\n" + 3243 " case 183 :\n" + 3244 " System.out.println(methodName + i);\n" + 3245 " break;\n" + 3246 " case 184 :\n" + 3247 " System.out.println(methodName + i);\n" + 3248 " break;\n" + 3249 " case 185 :\n" + 3250 " System.out.println(methodName + i);\n" + 3251 " break;\n" + 3252 " case 186 :\n" + 3253 " System.out.println(methodName + i);\n" + 3254 " break;\n" + 3255 " case 187 :\n" + 3256 " System.out.println(methodName + i);\n" + 3257 " break;\n" + 3258 " case 188 :\n" + 3259 " System.out.println(methodName + i);\n" + 3260 " break;\n" + 3261 " case 189 :\n" + 3262 " System.out.println(methodName + i);\n" + 3263 " break;\n" + 3264 " case 190 :\n" + 3265 " System.out.println(methodName + i);\n" + 3266 " break;\n" + 3267 " case 191 :\n" + 3268 " System.out.println(methodName + i);\n" + 3269 " break;\n" + 3270 " case 192 :\n" + 3271 " System.out.println(methodName + i);\n" + 3272 " break;\n" + 3273 " case 193 :\n" + 3274 " System.out.println(methodName + i);\n" + 3275 " break;\n" + 3276 " case 194 :\n" + 3277 " System.out.println(methodName + i);\n" + 3278 " break;\n" + 3279 " case 195 :\n" + 3280 " System.out.println(methodName + i);\n" + 3281 " break;\n" + 3282 " case 196 :\n" + 3283 " System.out.println(methodName + i);\n" + 3284 " break;\n" + 3285 " case 197 :\n" + 3286 " System.out.println(methodName + i);\n" + 3287 " break;\n" + 3288 " case 198 :\n" + 3289 " System.out.println(methodName + i);\n" + 3290 " break;\n" + 3291 " case 199 :\n" + 3292 " System.out.println(methodName + i);\n" + 3293 " break;\n" + 3294 " case 200 :\n" + 3295 " System.out.println(methodName + i);\n" + 3296 " break;\n" + 3297 " case 201 :\n" + 3298 " System.out.println(methodName + i);\n" + 3299 " break;\n" + 3300 " case 202 :\n" + 3301 " System.out.println(methodName + i);\n" + 3302 " break;\n" + 3303 " case 203 :\n" + 3304 " System.out.println(methodName + i);\n" + 3305 " break;\n" + 3306 " case 204 :\n" + 3307 " System.out.println(methodName + i);\n" + 3308 " break;\n" + 3309 " case 205 :\n" + 3310 " System.out.println(methodName + i);\n" + 3311 " break;\n" + 3312 " case 206 :\n" + 3313 " System.out.println(methodName + i);\n" + 3314 " break;\n" + 3315 " case 207 :\n" + 3316 " System.out.println(methodName + i);\n" + 3317 " break;\n" + 3318 " case 208 :\n" + 3319 " System.out.println(methodName + i);\n" + 3320 " break;\n" + 3321 " case 209 :\n" + 3322 " System.out.println(methodName + i);\n" + 3323 " break;\n" + 3324 " case 210 :\n" + 3325 " System.out.println(methodName + i);\n" + 3326 " break;\n" + 3327 " case 211 :\n" + 3328 " System.out.println(methodName + i);\n" + 3329 " break;\n" + 3330 " case 212 :\n" + 3331 " System.out.println(methodName + i);\n" + 3332 " break;\n" + 3333 " case 213 :\n" + 3334 " System.out.println(methodName + i);\n" + 3335 " break;\n" + 3336 " case 214 :\n" + 3337 " System.out.println(methodName + i);\n" + 3338 " break;\n" + 3339 " case 215 :\n" + 3340 " System.out.println(methodName + i);\n" + 3341 " break;\n" + 3342 " case 216 :\n" + 3343 " System.out.println(methodName + i);\n" + 3344 " break;\n" + 3345 " case 217 :\n" + 3346 " System.out.println(methodName + i);\n" + 3347 " break;\n" + 3348 " case 218 :\n" + 3349 " System.out.println(methodName + i);\n" + 3350 " break;\n" + 3351 " case 219 :\n" + 3352 " System.out.println(methodName + i);\n" + 3353 " break;\n" + 3354 " case 220 :\n" + 3355 " System.out.println(methodName + i);\n" + 3356 " break;\n" + 3357 " case 221 :\n" + 3358 " System.out.println(methodName + i);\n" + 3359 " break;\n" + 3360 " case 222 :\n" + 3361 " System.out.println(methodName + i);\n" + 3362 " break;\n" + 3363 " case 223 :\n" + 3364 " System.out.println(methodName + i);\n" + 3365 " break;\n" + 3366 " case 224 :\n" + 3367 " System.out.println(methodName + i);\n" + 3368 " break;\n" + 3369 " case 225 :\n" + 3370 " System.out.println(methodName + i);\n" + 3371 " break;\n" + 3372 " case 226 :\n" + 3373 " System.out.println(methodName + i);\n" + 3374 " break;\n" + 3375 " case 227 :\n" + 3376 " System.out.println(methodName + i);\n" + 3377 " break;\n" + 3378 " case 228 :\n" + 3379 " System.out.println(methodName + i);\n" + 3380 " break;\n" + 3381 " case 229 :\n" + 3382 " System.out.println(methodName + i);\n" + 3383 " break;\n" + 3384 " case 230 :\n" + 3385 " System.out.println(methodName + i);\n" + 3386 " break;\n" + 3387 " case 231 :\n" + 3388 " System.out.println(methodName + i);\n" + 3389 " break;\n" + 3390 " case 232 :\n" + 3391 " System.out.println(methodName + i);\n" + 3392 " break;\n" + 3393 " case 233 :\n" + 3394 " System.out.println(methodName + i);\n" + 3395 " break;\n" + 3396 " case 234 :\n" + 3397 " System.out.println(methodName + i);\n" + 3398 " break;\n" + 3399 " case 235 :\n" + 3400 " System.out.println(methodName + i);\n" + 3401 " break;\n" + 3402 " case 236 :\n" + 3403 " System.out.println(methodName + i);\n" + 3404 " break;\n" + 3405 " case 237 :\n" + 3406 " System.out.println(methodName + i);\n" + 3407 " break;\n" + 3408 " case 238 :\n" + 3409 " System.out.println(methodName + i);\n" + 3410 " break;\n" + 3411 " case 239 :\n" + 3412 " System.out.println(methodName + i);\n" + 3413 " break;\n" + 3414 " case 240 :\n" + 3415 " System.out.println(methodName + i);\n" + 3416 " break;\n" + 3417 " case 241 :\n" + 3418 " System.out.println(methodName + i);\n" + 3419 " break;\n" + 3420 " case 242 :\n" + 3421 " System.out.println(methodName + i);\n" + 3422 " break;\n" + 3423 " case 243 :\n" + 3424 " System.out.println(methodName + i);\n" + 3425 " break;\n" + 3426 " case 244 :\n" + 3427 " System.out.println(methodName + i);\n" + 3428 " break;\n" + 3429 " case 245 :\n" + 3430 " System.out.println(methodName + i);\n" + 3431 " break;\n" + 3432 " case 246 :\n" + 3433 " System.out.println(methodName + i);\n" + 3434 " break;\n" + 3435 " case 247 :\n" + 3436 " System.out.println(methodName + i);\n" + 3437 " break;\n" + 3438 " case 248 :\n" + 3439 " System.out.println(methodName + i);\n" + 3440 " break;\n" + 3441 " case 249 :\n" + 3442 " System.out.println(methodName + i);\n" + 3443 " break;\n" + 3444 " case 250 :\n" + 3445 " System.out.println(methodName + i);\n" + 3446 " break;\n" + 3447 " case 251 :\n" + 3448 " System.out.println(methodName + i);\n" + 3449 " break;\n" + 3450 " case 252 :\n" + 3451 " System.out.println(methodName + i);\n" + 3452 " break;\n" + 3453 " case 253 :\n" + 3454 " System.out.println(methodName + i);\n" + 3455 " break;\n" + 3456 " case 254 :\n" + 3457 " System.out.println(methodName + i);\n" + 3458 " break;\n" + 3459 " case 255 :\n" + 3460 " System.out.println(methodName + i);\n" + 3461 " break;\n" + 3462 " case 256 :\n" + 3463 " System.out.println(methodName + i);\n" + 3464 " break;\n" + 3465 " case 257 :\n" + 3466 " System.out.println(methodName + i);\n" + 3467 " break;\n" + 3468 " case 258 :\n" + 3469 " System.out.println(methodName + i);\n" + 3470 " break;\n" + 3471 " case 259 :\n" + 3472 " System.out.println(methodName + i);\n" + 3473 " break;\n" + 3474 " case 260 :\n" + 3475 " System.out.println(methodName + i);\n" + 3476 " break;\n" + 3477 " case 261 :\n" + 3478 " System.out.println(methodName + i);\n" + 3479 " break;\n" + 3480 " case 262 :\n" + 3481 " System.out.println(methodName + i);\n" + 3482 " break;\n" + 3483 " case 263 :\n" + 3484 " System.out.println(methodName + i);\n" + 3485 " break;\n" + 3486 " case 264 :\n" + 3487 " System.out.println(methodName + i);\n" + 3488 " break;\n" + 3489 " case 265 :\n" + 3490 " System.out.println(methodName + i);\n" + 3491 " break;\n" + 3492 " case 266 :\n" + 3493 " System.out.println(methodName + i);\n" + 3494 " break;\n" + 3495 " case 267 :\n" + 3496 " System.out.println(methodName + i);\n" + 3497 " break;\n" + 3498 " case 268 :\n" + 3499 " System.out.println(methodName + i);\n" + 3500 " break;\n" + 3501 " case 269 :\n" + 3502 " System.out.println(methodName + i);\n" + 3503 " break;\n" + 3504 " case 270 :\n" + 3505 " System.out.println(methodName + i);\n" + 3506 " break;\n" + 3507 " case 271 :\n" + 3508 " System.out.println(methodName + i);\n" + 3509 " break;\n" + 3510 " case 272 :\n" + 3511 " System.out.println(methodName + i);\n" + 3512 " break;\n" + 3513 " case 273 :\n" + 3514 " System.out.println(methodName + i);\n" + 3515 " break;\n" + 3516 " case 274 :\n" + 3517 " System.out.println(methodName + i);\n" + 3518 " break;\n" + 3519 " case 275 :\n" + 3520 " System.out.println(methodName + i);\n" + 3521 " break;\n" + 3522 " case 276 :\n" + 3523 " System.out.println(methodName + i);\n" + 3524 " break;\n" + 3525 " case 277 :\n" + 3526 " System.out.println(methodName + i);\n" + 3527 " break;\n" + 3528 " case 278 :\n" + 3529 " System.out.println(methodName + i);\n" + 3530 " break;\n" + 3531 " case 279 :\n" + 3532 " System.out.println(methodName + i);\n" + 3533 " break;\n" + 3534 " case 280 :\n" + 3535 " System.out.println(methodName + i);\n" + 3536 " break;\n" + 3537 " case 281 :\n" + 3538 " System.out.println(methodName + i);\n" + 3539 " break;\n" + 3540 " case 282 :\n" + 3541 " System.out.println(methodName + i);\n" + 3542 " break;\n" + 3543 " case 283 :\n" + 3544 " System.out.println(methodName + i);\n" + 3545 " break;\n" + 3546 " case 284 :\n" + 3547 " System.out.println(methodName + i);\n" + 3548 " break;\n" + 3549 " case 285 :\n" + 3550 " System.out.println(methodName + i);\n" + 3551 " break;\n" + 3552 " case 286 :\n" + 3553 " System.out.println(methodName + i);\n" + 3554 " break;\n" + 3555 " case 287 :\n" + 3556 " System.out.println(methodName + i);\n" + 3557 " break;\n" + 3558 " case 288 :\n" + 3559 " System.out.println(methodName + i);\n" + 3560 " break;\n" + 3561 " case 289 :\n" + 3562 " System.out.println(methodName + i);\n" + 3563 " break;\n" + 3564 " case 290 :\n" + 3565 " System.out.println(methodName + i);\n" + 3566 " break;\n" + 3567 " case 291 :\n" + 3568 " System.out.println(methodName + i);\n" + 3569 " break;\n" + 3570 " case 292 :\n" + 3571 " System.out.println(methodName + i);\n" + 3572 " break;\n" + 3573 " case 293 :\n" + 3574 " System.out.println(methodName + i);\n" + 3575 " break;\n" + 3576 " case 294 :\n" + 3577 " System.out.println(methodName + i);\n" + 3578 " break;\n" + 3579 " case 295 :\n" + 3580 " System.out.println(methodName + i);\n" + 3581 " break;\n" + 3582 " case 296 :\n" + 3583 " System.out.println(methodName + i);\n" + 3584 " break;\n" + 3585 " case 297 :\n" + 3586 " System.out.println(methodName + i);\n" + 3587 " break;\n" + 3588 " case 298 :\n" + 3589 " System.out.println(methodName + i);\n" + 3590 " break;\n" + 3591 " case 299 :\n" + 3592 " System.out.println(methodName + i);\n" + 3593 " break;\n" + 3594 " case 300 :\n" + 3595 " System.out.println(methodName + i);\n" + 3596 " break;\n" + 3597 " case 301 :\n" + 3598 " System.out.println(methodName + i);\n" + 3599 " break;\n" + 3600 " case 302 :\n" + 3601 " System.out.println(methodName + i);\n" + 3602 " break;\n" + 3603 " case 303 :\n" + 3604 " System.out.println(methodName + i);\n" + 3605 " break;\n" + 3606 " case 304 :\n" + 3607 " System.out.println(methodName + i);\n" + 3608 " break;\n" + 3609 " case 305 :\n" + 3610 " System.out.println(methodName + i);\n" + 3611 " break;\n" + 3612 " case 306 :\n" + 3613 " System.out.println(methodName + i);\n" + 3614 " break;\n" + 3615 " case 307 :\n" + 3616 " System.out.println(methodName + i);\n" + 3617 " break;\n" + 3618 " case 308 :\n" + 3619 " System.out.println(methodName + i);\n" + 3620 " break;\n" + 3621 " case 309 :\n" + 3622 " System.out.println(methodName + i);\n" + 3623 " break;\n" + 3624 " case 310 :\n" + 3625 " System.out.println(methodName + i);\n" + 3626 " break;\n" + 3627 " case 311 :\n" + 3628 " System.out.println(methodName + i);\n" + 3629 " break;\n" + 3630 " case 312 :\n" + 3631 " System.out.println(methodName + i);\n" + 3632 " break;\n" + 3633 " case 313 :\n" + 3634 " System.out.println(methodName + i);\n" + 3635 " break;\n" + 3636 " case 314 :\n" + 3637 " System.out.println(methodName + i);\n" + 3638 " break;\n" + 3639 " case 315 :\n" + 3640 " System.out.println(methodName + i);\n" + 3641 " break;\n" + 3642 " case 316 :\n" + 3643 " System.out.println(methodName + i);\n" + 3644 " break;\n" + 3645 " case 317 :\n" + 3646 " System.out.println(methodName + i);\n" + 3647 " break;\n" + 3648 " case 318 :\n" + 3649 " System.out.println(methodName + i);\n" + 3650 " break;\n" + 3651 " case 319 :\n" + 3652 " System.out.println(methodName + i);\n" + 3653 " break;\n" + 3654 " case 320 :\n" + 3655 " System.out.println(methodName + i);\n" + 3656 " break;\n" + 3657 " case 321 :\n" + 3658 " System.out.println(methodName + i);\n" + 3659 " break;\n" + 3660 " case 322 :\n" + 3661 " System.out.println(methodName + i);\n" + 3662 " break;\n" + 3663 " case 323 :\n" + 3664 " System.out.println(methodName + i);\n" + 3665 " break;\n" + 3666 " case 324 :\n" + 3667 " System.out.println(methodName + i);\n" + 3668 " break;\n" + 3669 " case 325 :\n" + 3670 " System.out.println(methodName + i);\n" + 3671 " break;\n" + 3672 " case 326 :\n" + 3673 " System.out.println(methodName + i);\n" + 3674 " break;\n" + 3675 " case 327 :\n" + 3676 " System.out.println(methodName + i);\n" + 3677 " break;\n" + 3678 " case 328 :\n" + 3679 " System.out.println(methodName + i);\n" + 3680 " break;\n" + 3681 " case 329 :\n" + 3682 " System.out.println(methodName + i);\n" + 3683 " break;\n" + 3684 " case 330 :\n" + 3685 " System.out.println(methodName + i);\n" + 3686 " break;\n" + 3687 " case 331 :\n" + 3688 " System.out.println(methodName + i);\n" + 3689 " break;\n" + 3690 " case 332 :\n" + 3691 " System.out.println(methodName + i);\n" + 3692 " break;\n" + 3693 " case 333 :\n" + 3694 " System.out.println(methodName + i);\n" + 3695 " break;\n" + 3696 " case 334 :\n" + 3697 " System.out.println(methodName + i);\n" + 3698 " break;\n" + 3699 " case 335 :\n" + 3700 " System.out.println(methodName + i);\n" + 3701 " break;\n" + 3702 " case 336 :\n" + 3703 " System.out.println(methodName + i);\n" + 3704 " break;\n" + 3705 " case 337 :\n" + 3706 " System.out.println(methodName + i);\n" + 3707 " break;\n" + 3708 " case 338 :\n" + 3709 " System.out.println(methodName + i);\n" + 3710 " break;\n" + 3711 " case 339 :\n" + 3712 " System.out.println(methodName + i);\n" + 3713 " break;\n" + 3714 " case 340 :\n" + 3715 " System.out.println(methodName + i);\n" + 3716 " break;\n" + 3717 " case 341 :\n" + 3718 " System.out.println(methodName + i);\n" + 3719 " break;\n" + 3720 " case 342 :\n" + 3721 " System.out.println(methodName + i);\n" + 3722 " break;\n" + 3723 " case 343 :\n" + 3724 " System.out.println(methodName + i);\n" + 3725 " break;\n" + 3726 " case 344 :\n" + 3727 " System.out.println(methodName + i);\n" + 3728 " break;\n" + 3729 " case 345 :\n" + 3730 " System.out.println(methodName + i);\n" + 3731 " break;\n" + 3732 " case 346 :\n" + 3733 " System.out.println(methodName + i);\n" + 3734 " break;\n" + 3735 " case 347 :\n" + 3736 " System.out.println(methodName + i);\n" + 3737 " break;\n" + 3738 " case 348 :\n" + 3739 " System.out.println(methodName + i);\n" + 3740 " break;\n" + 3741 " case 349 :\n" + 3742 " System.out.println(methodName + i);\n" + 3743 " break;\n" + 3744 " case 350 :\n" + 3745 " System.out.println(methodName + i);\n" + 3746 " break;\n" + 3747 " case 351 :\n" + 3748 " System.out.println(methodName + i);\n" + 3749 " break;\n" + 3750 " case 352 :\n" + 3751 " System.out.println(methodName + i);\n" + 3752 " break;\n" + 3753 " case 353 :\n" + 3754 " System.out.println(methodName + i);\n" + 3755 " break;\n" + 3756 " case 354 :\n" + 3757 " System.out.println(methodName + i);\n" + 3758 " break;\n" + 3759 " case 355 :\n" + 3760 " System.out.println(methodName + i);\n" + 3761 " break;\n" + 3762 " case 356 :\n" + 3763 " System.out.println(methodName + i);\n" + 3764 " break;\n" + 3765 " case 357 :\n" + 3766 " System.out.println(methodName + i);\n" + 3767 " break;\n" + 3768 " case 358 :\n" + 3769 " System.out.println(methodName + i);\n" + 3770 " break;\n" + 3771 " case 359 :\n" + 3772 " System.out.println(methodName + i);\n" + 3773 " break;\n" + 3774 " case 360 :\n" + 3775 " System.out.println(methodName + i);\n" + 3776 " break;\n" + 3777 " case 361 :\n" + 3778 " System.out.println(methodName + i);\n" + 3779 " break;\n" + 3780 " case 362 :\n" + 3781 " System.out.println(methodName + i);\n" + 3782 " break;\n" + 3783 " case 363 :\n" + 3784 " System.out.println(methodName + i);\n" + 3785 " break;\n" + 3786 " case 364 :\n" + 3787 " System.out.println(methodName + i);\n" + 3788 " break;\n" + 3789 " case 365 :\n" + 3790 " System.out.println(methodName + i);\n" + 3791 " break;\n" + 3792 " case 366 :\n" + 3793 " System.out.println(methodName + i);\n" + 3794 " break;\n" + 3795 " case 367 :\n" + 3796 " System.out.println(methodName + i);\n" + 3797 " break;\n" + 3798 " case 368 :\n" + 3799 " System.out.println(methodName + i);\n" + 3800 " break;\n" + 3801 " case 369 :\n" + 3802 " System.out.println(methodName + i);\n" + 3803 " break;\n" + 3804 " case 370 :\n" + 3805 " System.out.println(methodName + i);\n" + 3806 " break;\n" + 3807 " case 371 :\n" + 3808 " System.out.println(methodName + i);\n" + 3809 " break;\n" + 3810 " case 372 :\n" + 3811 " System.out.println(methodName + i);\n" + 3812 " break;\n" + 3813 " case 373 :\n" + 3814 " System.out.println(methodName + i);\n" + 3815 " break;\n" + 3816 " case 374 :\n" + 3817 " System.out.println(methodName + i);\n" + 3818 " break;\n" + 3819 " case 375 :\n" + 3820 " System.out.println(methodName + i);\n" + 3821 " break;\n" + 3822 " case 376 :\n" + 3823 " System.out.println(methodName + i);\n" + 3824 " break;\n" + 3825 " case 377 :\n" + 3826 " System.out.println(methodName + i);\n" + 3827 " break;\n" + 3828 " case 378 :\n" + 3829 " System.out.println(methodName + i);\n" + 3830 " break;\n" + 3831 " case 379 :\n" + 3832 " System.out.println(methodName + i);\n" + 3833 " break;\n" + 3834 " case 380 :\n" + 3835 " System.out.println(methodName + i);\n" + 3836 " break;\n" + 3837 " case 381 :\n" + 3838 " System.out.println(methodName + i);\n" + 3839 " break;\n" + 3840 " case 382 :\n" + 3841 " System.out.println(methodName + i);\n" + 3842 " break;\n" + 3843 " case 383 :\n" + 3844 " System.out.println(methodName + i);\n" + 3845 " break;\n" + 3846 " case 384 :\n" + 3847 " System.out.println(methodName + i);\n" + 3848 " break;\n" + 3849 " case 385 :\n" + 3850 " System.out.println(methodName + i);\n" + 3851 " break;\n" + 3852 " case 386 :\n" + 3853 " System.out.println(methodName + i);\n" + 3854 " break;\n" + 3855 " case 387 :\n" + 3856 " System.out.println(methodName + i);\n" + 3857 " break;\n" + 3858 " case 388 :\n" + 3859 " System.out.println(methodName + i);\n" + 3860 " break;\n" + 3861 " case 389 :\n" + 3862 " System.out.println(methodName + i);\n" + 3863 " break;\n" + 3864 " case 390 :\n" + 3865 " System.out.println(methodName + i);\n" + 3866 " break;\n" + 3867 " case 391 :\n" + 3868 " System.out.println(methodName + i);\n" + 3869 " break;\n" + 3870 " case 392 :\n" + 3871 " System.out.println(methodName + i);\n" + 3872 " break;\n" + 3873 " case 393 :\n" + 3874 " System.out.println(methodName + i);\n" + 3875 " break;\n" + 3876 " case 394 :\n" + 3877 " System.out.println(methodName + i);\n" + 3878 " break;\n" + 3879 " case 395 :\n" + 3880 " System.out.println(methodName + i);\n" + 3881 " break;\n" + 3882 " case 396 :\n" + 3883 " System.out.println(methodName + i);\n" + 3884 " break;\n" + 3885 " case 397 :\n" + 3886 " System.out.println(methodName + i);\n" + 3887 " break;\n" + 3888 " case 398 :\n" + 3889 " System.out.println(methodName + i);\n" + 3890 " break;\n" + 3891 " case 399 :\n" + 3892 " System.out.println(methodName + i);\n" + 3893 " break;\n" + 3894 " case 400 :\n" + 3895 " System.out.println(methodName + i);\n" + 3896 " break;\n" + 3897 " case 401 :\n" + 3898 " System.out.println(methodName + i);\n" + 3899 " break;\n" + 3900 " case 402 :\n" + 3901 " System.out.println(methodName + i);\n" + 3902 " break;\n" + 3903 " case 403 :\n" + 3904 " System.out.println(methodName + i);\n" + 3905 " break;\n" + 3906 " case 404 :\n" + 3907 " System.out.println(methodName + i);\n" + 3908 " break;\n" + 3909 " case 405 :\n" + 3910 " System.out.println(methodName + i);\n" + 3911 " break;\n" + 3912 " case 406 :\n" + 3913 " System.out.println(methodName + i);\n" + 3914 " break;\n" + 3915 " case 407 :\n" + 3916 " System.out.println(methodName + i);\n" + 3917 " break;\n" + 3918 " case 408 :\n" + 3919 " System.out.println(methodName + i);\n" + 3920 " break;\n" + 3921 " case 409 :\n" + 3922 " System.out.println(methodName + i);\n" + 3923 " break;\n" + 3924 " case 410 :\n" + 3925 " System.out.println(methodName + i);\n" + 3926 " break;\n" + 3927 " case 411 :\n" + 3928 " System.out.println(methodName + i);\n" + 3929 " break;\n" + 3930 " case 412 :\n" + 3931 " System.out.println(methodName + i);\n" + 3932 " break;\n" + 3933 " case 413 :\n" + 3934 " System.out.println(methodName + i);\n" + 3935 " break;\n" + 3936 " case 414 :\n" + 3937 " System.out.println(methodName + i);\n" + 3938 " break;\n" + 3939 " case 415 :\n" + 3940 " System.out.println(methodName + i);\n" + 3941 " break;\n" + 3942 " case 416 :\n" + 3943 " System.out.println(methodName + i);\n" + 3944 " break;\n" + 3945 " case 417 :\n" + 3946 " System.out.println(methodName + i);\n" + 3947 " break;\n" + 3948 " case 418 :\n" + 3949 " System.out.println(methodName + i);\n" + 3950 " break;\n" + 3951 " case 419 :\n" + 3952 " System.out.println(methodName + i);\n" + 3953 " break;\n" + 3954 " case 420 :\n" + 3955 " System.out.println(methodName + i);\n" + 3956 " break;\n" + 3957 " case 421 :\n" + 3958 " System.out.println(methodName + i);\n" + 3959 " break;\n" + 3960 " case 422 :\n" + 3961 " System.out.println(methodName + i);\n" + 3962 " break;\n" + 3963 " case 423 :\n" + 3964 " System.out.println(methodName + i);\n" + 3965 " break;\n" + 3966 " case 424 :\n" + 3967 " System.out.println(methodName + i);\n" + 3968 " break;\n" + 3969 " case 425 :\n" + 3970 " System.out.println(methodName + i);\n" + 3971 " break;\n" + 3972 " case 426 :\n" + 3973 " System.out.println(methodName + i);\n" + 3974 " break;\n" + 3975 " case 427 :\n" + 3976 " System.out.println(methodName + i);\n" + 3977 " break;\n" + 3978 " case 428 :\n" + 3979 " System.out.println(methodName + i);\n" + 3980 " break;\n" + 3981 " case 429 :\n" + 3982 " System.out.println(methodName + i);\n" + 3983 " break;\n" + 3984 " case 430 :\n" + 3985 " System.out.println(methodName + i);\n" + 3986 " break;\n" + 3987 " case 431 :\n" + 3988 " System.out.println(methodName + i);\n" + 3989 " break;\n" + 3990 " case 432 :\n" + 3991 " System.out.println(methodName + i);\n" + 3992 " break;\n" + 3993 " case 433 :\n" + 3994 " System.out.println(methodName + i);\n" + 3995 " break;\n" + 3996 " case 434 :\n" + 3997 " System.out.println(methodName + i);\n" + 3998 " break;\n" + 3999 " case 435 :\n" + 4000 " System.out.println(methodName + i);\n" + 4001 " break;\n" + 4002 " case 436 :\n" + 4003 " System.out.println(methodName + i);\n" + 4004 " break;\n" + 4005 " case 437 :\n" + 4006 " System.out.println(methodName + i);\n" + 4007 " break;\n" + 4008 " case 438 :\n" + 4009 " System.out.println(methodName + i);\n" + 4010 " break;\n" + 4011 " case 439 :\n" + 4012 " System.out.println(methodName + i);\n" + 4013 " break;\n" + 4014 " case 440 :\n" + 4015 " System.out.println(methodName + i);\n" + 4016 " break;\n" + 4017 " case 441 :\n" + 4018 " System.out.println(methodName + i);\n" + 4019 " break;\n" + 4020 " case 442 :\n" + 4021 " System.out.println(methodName + i);\n" + 4022 " break;\n" + 4023 " case 443 :\n" + 4024 " System.out.println(methodName + i);\n" + 4025 " break;\n" + 4026 " case 444 :\n" + 4027 " System.out.println(methodName + i);\n" + 4028 " break;\n" + 4029 " case 445 :\n" + 4030 " System.out.println(methodName + i);\n" + 4031 " break;\n" + 4032 " case 446 :\n" + 4033 " System.out.println(methodName + i);\n" + 4034 " break;\n" + 4035 " case 447 :\n" + 4036 " System.out.println(methodName + i);\n" + 4037 " break;\n" + 4038 " case 448 :\n" + 4039 " System.out.println(methodName + i);\n" + 4040 " break;\n" + 4041 " case 449 :\n" + 4042 " System.out.println(methodName + i);\n" + 4043 " break;\n" + 4044 " case 450 :\n" + 4045 " System.out.println(methodName + i);\n" + 4046 " break;\n" + 4047 " case 451 :\n" + 4048 " System.out.println(methodName + i);\n" + 4049 " break;\n" + 4050 " case 452 :\n" + 4051 " System.out.println(methodName + i);\n" + 4052 " break;\n" + 4053 " case 453 :\n" + 4054 " System.out.println(methodName + i);\n" + 4055 " break;\n" + 4056 " case 454 :\n" + 4057 " System.out.println(methodName + i);\n" + 4058 " break;\n" + 4059 " case 455 :\n" + 4060 " System.out.println(methodName + i);\n" + 4061 " break;\n" + 4062 " case 456 :\n" + 4063 " System.out.println(methodName + i);\n" + 4064 " break;\n" + 4065 " case 457 :\n" + 4066 " System.out.println(methodName + i);\n" + 4067 " break;\n" + 4068 " case 458 :\n" + 4069 " System.out.println(methodName + i);\n" + 4070 " break;\n" + 4071 " case 459 :\n" + 4072 " System.out.println(methodName + i);\n" + 4073 " break;\n" + 4074 " case 460 :\n" + 4075 " System.out.println(methodName + i);\n" + 4076 " break;\n" + 4077 " case 461 :\n" + 4078 " System.out.println(methodName + i);\n" + 4079 " break;\n" + 4080 " case 462 :\n" + 4081 " System.out.println(methodName + i);\n" + 4082 " break;\n" + 4083 " case 463 :\n" + 4084 " System.out.println(methodName + i);\n" + 4085 " break;\n" + 4086 " case 464 :\n" + 4087 " System.out.println(methodName + i);\n" + 4088 " break;\n" + 4089 " case 465 :\n" + 4090 " System.out.println(methodName + i);\n" + 4091 " break;\n" + 4092 " case 466 :\n" + 4093 " System.out.println(methodName + i);\n" + 4094 " break;\n" + 4095 " case 467 :\n" + 4096 " System.out.println(methodName + i);\n" + 4097 " break;\n" + 4098 " case 468 :\n" + 4099 " System.out.println(methodName + i);\n" + 4100 " break;\n" + 4101 " case 469 :\n" + 4102 " System.out.println(methodName + i);\n" + 4103 " break;\n" + 4104 " case 470 :\n" + 4105 " System.out.println(methodName + i);\n" + 4106 " break;\n" + 4107 " case 471 :\n" + 4108 " System.out.println(methodName + i);\n" + 4109 " break;\n" + 4110 " case 472 :\n" + 4111 " System.out.println(methodName + i);\n" + 4112 " break;\n" + 4113 " case 473 :\n" + 4114 " System.out.println(methodName + i);\n" + 4115 " break;\n" + 4116 " case 474 :\n" + 4117 " System.out.println(methodName + i);\n" + 4118 " break;\n" + 4119 " case 475 :\n" + 4120 " System.out.println(methodName + i);\n" + 4121 " break;\n" + 4122 " case 476 :\n" + 4123 " System.out.println(methodName + i);\n" + 4124 " break;\n" + 4125 " case 477 :\n" + 4126 " System.out.println(methodName + i);\n" + 4127 " break;\n" + 4128 " case 478 :\n" + 4129 " System.out.println(methodName + i);\n" + 4130 " break;\n" + 4131 " case 479 :\n" + 4132 " System.out.println(methodName + i);\n" + 4133 " break;\n" + 4134 " case 480 :\n" + 4135 " System.out.println(methodName + i);\n" + 4136 " break;\n" + 4137 " case 481 :\n" + 4138 " System.out.println(methodName + i);\n" + 4139 " break;\n" + 4140 " case 482 :\n" + 4141 " System.out.println(methodName + i);\n" + 4142 " break;\n" + 4143 " case 483 :\n" + 4144 " System.out.println(methodName + i);\n" + 4145 " break;\n" + 4146 " case 484 :\n" + 4147 " System.out.println(methodName + i);\n" + 4148 " break;\n" + 4149 " case 485 :\n" + 4150 " System.out.println(methodName + i);\n" + 4151 " break;\n" + 4152 " case 486 :\n" + 4153 " System.out.println(methodName + i);\n" + 4154 " break;\n" + 4155 " case 487 :\n" + 4156 " System.out.println(methodName + i);\n" + 4157 " break;\n" + 4158 " case 488 :\n" + 4159 " System.out.println(methodName + i);\n" + 4160 " break;\n" + 4161 " case 489 :\n" + 4162 " System.out.println(methodName + i);\n" + 4163 " break;\n" + 4164 " case 490 :\n" + 4165 " System.out.println(methodName + i);\n" + 4166 " break;\n" + 4167 " case 491 :\n" + 4168 " System.out.println(methodName + i);\n" + 4169 " break;\n" + 4170 " case 492 :\n" + 4171 " System.out.println(methodName + i);\n" + 4172 " break;\n" + 4173 " case 493 :\n" + 4174 " System.out.println(methodName + i);\n" + 4175 " break;\n" + 4176 " case 494 :\n" + 4177 " System.out.println(methodName + i);\n" + 4178 " break;\n" + 4179 " case 495 :\n" + 4180 " System.out.println(methodName + i);\n" + 4181 " break;\n" + 4182 " case 496 :\n" + 4183 " System.out.println(methodName + i);\n" + 4184 " break;\n" + 4185 " case 497 :\n" + 4186 " System.out.println(methodName + i);\n" + 4187 " break;\n" + 4188 " case 498 :\n" + 4189 " System.out.println(methodName + i);\n" + 4190 " break;\n" + 4191 " case 499 :\n" + 4192 " System.out.println(methodName + i);\n" + 4193 " break;\n" + 4194 " case 500 :\n" + 4195 " System.out.println(methodName + i);\n" + 4196 " break;\n" + 4197 " case 501 :\n" + 4198 " System.out.println(methodName + i);\n" + 4199 " break;\n" + 4200 " case 502 :\n" + 4201 " System.out.println(methodName + i);\n" + 4202 " break;\n" + 4203 " case 503 :\n" + 4204 " System.out.println(methodName + i);\n" + 4205 " break;\n" + 4206 " case 504 :\n" + 4207 " System.out.println(methodName + i);\n" + 4208 " break;\n" + 4209 " case 505 :\n" + 4210 " System.out.println(methodName + i);\n" + 4211 " break;\n" + 4212 " case 506 :\n" + 4213 " System.out.println(methodName + i);\n" + 4214 " break;\n" + 4215 " case 507 :\n" + 4216 " System.out.println(methodName + i);\n" + 4217 " break;\n" + 4218 " case 508 :\n" + 4219 " System.out.println(methodName + i);\n" + 4220 " break;\n" + 4221 " case 509 :\n" + 4222 " System.out.println(methodName + i);\n" + 4223 " break;\n" + 4224 " case 510 :\n" + 4225 " System.out.println(methodName + i);\n" + 4226 " break;\n" + 4227 " case 511 :\n" + 4228 " System.out.println(methodName + i);\n" + 4229 " break;\n" + 4230 " case 512 :\n" + 4231 " System.out.println(methodName + i);\n" + 4232 " break;\n" + 4233 " case 513 :\n" + 4234 " System.out.println(methodName + i);\n" + 4235 " break;\n" + 4236 " case 514 :\n" + 4237 " System.out.println(methodName + i);\n" + 4238 " break;\n" + 4239 " case 515 :\n" + 4240 " System.out.println(methodName + i);\n" + 4241 " break;\n" + 4242 " case 516 :\n" + 4243 " System.out.println(methodName + i);\n" + 4244 " break;\n" + 4245 " case 517 :\n" + 4246 " System.out.println(methodName + i);\n" + 4247 " break;\n" + 4248 " case 518 :\n" + 4249 " System.out.println(methodName + i);\n" + 4250 " break;\n" + 4251 " case 519 :\n" + 4252 " System.out.println(methodName + i);\n" + 4253 " break;\n" + 4254 " case 520 :\n" + 4255 " System.out.println(methodName + i);\n" + 4256 " break;\n" + 4257 " case 521 :\n" + 4258 " System.out.println(methodName + i);\n" + 4259 " break;\n" + 4260 " case 522 :\n" + 4261 " System.out.println(methodName + i);\n" + 4262 " break;\n" + 4263 " case 523 :\n" + 4264 " System.out.println(methodName + i);\n" + 4265 " break;\n" + 4266 " case 524 :\n" + 4267 " System.out.println(methodName + i);\n" + 4268 " break;\n" + 4269 " case 525 :\n" + 4270 " System.out.println(methodName + i);\n" + 4271 " break;\n" + 4272 " case 526 :\n" + 4273 " System.out.println(methodName + i);\n" + 4274 " break;\n" + 4275 " case 527 :\n" + 4276 " System.out.println(methodName + i);\n" + 4277 " break;\n" + 4278 " case 528 :\n" + 4279 " System.out.println(methodName + i);\n" + 4280 " break;\n" + 4281 " case 529 :\n" + 4282 " System.out.println(methodName + i);\n" + 4283 " break;\n" + 4284 " case 530 :\n" + 4285 " System.out.println(methodName + i);\n" + 4286 " break;\n" + 4287 " case 531 :\n" + 4288 " System.out.println(methodName + i);\n" + 4289 " break;\n" + 4290 " case 532 :\n" + 4291 " System.out.println(methodName + i);\n" + 4292 " break;\n" + 4293 " case 533 :\n" + 4294 " System.out.println(methodName + i);\n" + 4295 " break;\n" + 4296 " case 534 :\n" + 4297 " System.out.println(methodName + i);\n" + 4298 " break;\n" + 4299 " case 535 :\n" + 4300 " System.out.println(methodName + i);\n" + 4301 " break;\n" + 4302 " case 536 :\n" + 4303 " System.out.println(methodName + i);\n" + 4304 " break;\n" + 4305 " case 537 :\n" + 4306 " System.out.println(methodName + i);\n" + 4307 " break;\n" + 4308 " case 538 :\n" + 4309 " System.out.println(methodName + i);\n" + 4310 " break;\n" + 4311 " case 539 :\n" + 4312 " System.out.println(methodName + i);\n" + 4313 " break;\n" + 4314 " case 540 :\n" + 4315 " System.out.println(methodName + i);\n" + 4316 " break;\n" + 4317 " case 541 :\n" + 4318 " System.out.println(methodName + i);\n" + 4319 " break;\n" + 4320 " case 542 :\n" + 4321 " System.out.println(methodName + i);\n" + 4322 " break;\n" + 4323 " case 543 :\n" + 4324 " System.out.println(methodName + i);\n" + 4325 " break;\n" + 4326 " case 544 :\n" + 4327 " System.out.println(methodName + i);\n" + 4328 " break;\n" + 4329 " case 545 :\n" + 4330 " System.out.println(methodName + i);\n" + 4331 " break;\n" + 4332 " case 546 :\n" + 4333 " System.out.println(methodName + i);\n" + 4334 " break;\n" + 4335 " case 547 :\n" + 4336 " System.out.println(methodName + i);\n" + 4337 " break;\n" + 4338 " case 548 :\n" + 4339 " System.out.println(methodName + i);\n" + 4340 " break;\n" + 4341 " case 549 :\n" + 4342 " System.out.println(methodName + i);\n" + 4343 " break;\n" + 4344 " case 550 :\n" + 4345 " System.out.println(methodName + i);\n" + 4346 " break;\n" + 4347 " case 551 :\n" + 4348 " System.out.println(methodName + i);\n" + 4349 " break;\n" + 4350 " case 552 :\n" + 4351 " System.out.println(methodName + i);\n" + 4352 " break;\n" + 4353 " case 553 :\n" + 4354 " System.out.println(methodName + i);\n" + 4355 " break;\n" + 4356 " case 554 :\n" + 4357 " System.out.println(methodName + i);\n" + 4358 " break;\n" + 4359 " case 555 :\n" + 4360 " System.out.println(methodName + i);\n" + 4361 " break;\n" + 4362 " case 556 :\n" + 4363 " System.out.println(methodName + i);\n" + 4364 " break;\n" + 4365 " case 557 :\n" + 4366 " System.out.println(methodName + i);\n" + 4367 " break;\n" + 4368 " case 558 :\n" + 4369 " System.out.println(methodName + i);\n" + 4370 " break;\n" + 4371 " case 559 :\n" + 4372 " System.out.println(methodName + i);\n" + 4373 " break;\n" + 4374 " case 560 :\n" + 4375 " System.out.println(methodName + i);\n" + 4376 " break;\n" + 4377 " case 561 :\n" + 4378 " System.out.println(methodName + i);\n" + 4379 " break;\n" + 4380 " case 562 :\n" + 4381 " System.out.println(methodName + i);\n" + 4382 " break;\n" + 4383 " case 563 :\n" + 4384 " System.out.println(methodName + i);\n" + 4385 " break;\n" + 4386 " case 564 :\n" + 4387 " System.out.println(methodName + i);\n" + 4388 " break;\n" + 4389 " case 565 :\n" + 4390 " System.out.println(methodName + i);\n" + 4391 " break;\n" + 4392 " case 566 :\n" + 4393 " System.out.println(methodName + i);\n" + 4394 " break;\n" + 4395 " case 567 :\n" + 4396 " System.out.println(methodName + i);\n" + 4397 " break;\n" + 4398 " case 568 :\n" + 4399 " System.out.println(methodName + i);\n" + 4400 " break;\n" + 4401 " case 569 :\n" + 4402 " System.out.println(methodName + i);\n" + 4403 " break;\n" + 4404 " case 570 :\n" + 4405 " System.out.println(methodName + i);\n" + 4406 " break;\n" + 4407 " case 571 :\n" + 4408 " System.out.println(methodName + i);\n" + 4409 " break;\n" + 4410 " case 572 :\n" + 4411 " System.out.println(methodName + i);\n" + 4412 " break;\n" + 4413 " case 573 :\n" + 4414 " System.out.println(methodName + i);\n" + 4415 " break;\n" + 4416 " case 574 :\n" + 4417 " System.out.println(methodName + i);\n" + 4418 " break;\n" + 4419 " case 575 :\n" + 4420 " System.out.println(methodName + i);\n" + 4421 " break;\n" + 4422 " case 576 :\n" + 4423 " System.out.println(methodName + i);\n" + 4424 " break;\n" + 4425 " case 577 :\n" + 4426 " System.out.println(methodName + i);\n" + 4427 " break;\n" + 4428 " case 578 :\n" + 4429 " System.out.println(methodName + i);\n" + 4430 " break;\n" + 4431 " case 579 :\n" + 4432 " System.out.println(methodName + i);\n" + 4433 " break;\n" + 4434 " case 580 :\n" + 4435 " System.out.println(methodName + i);\n" + 4436 " break;\n" + 4437 " case 581 :\n" + 4438 " System.out.println(methodName + i);\n" + 4439 " break;\n" + 4440 " case 582 :\n" + 4441 " System.out.println(methodName + i);\n" + 4442 " break;\n" + 4443 " case 583 :\n" + 4444 " System.out.println(methodName + i);\n" + 4445 " break;\n" + 4446 " case 584 :\n" + 4447 " System.out.println(methodName + i);\n" + 4448 " break;\n" + 4449 " case 585 :\n" + 4450 " System.out.println(methodName + i);\n" + 4451 " break;\n" + 4452 " case 586 :\n" + 4453 " System.out.println(methodName + i);\n" + 4454 " break;\n" + 4455 " case 587 :\n" + 4456 " System.out.println(methodName + i);\n" + 4457 " break;\n" + 4458 " case 588 :\n" + 4459 " System.out.println(methodName + i);\n" + 4460 " break;\n" + 4461 " case 589 :\n" + 4462 " System.out.println(methodName + i);\n" + 4463 " break;\n" + 4464 " case 590 :\n" + 4465 " System.out.println(methodName + i);\n" + 4466 " break;\n" + 4467 " case 591 :\n" + 4468 " System.out.println(methodName + i);\n" + 4469 " break;\n" + 4470 " case 592 :\n" + 4471 " System.out.println(methodName + i);\n" + 4472 " break;\n" + 4473 " case 593 :\n" + 4474 " System.out.println(methodName + i);\n" + 4475 " break;\n" + 4476 " case 594 :\n" + 4477 " System.out.println(methodName + i);\n" + 4478 " break;\n" + 4479 " case 595 :\n" + 4480 " System.out.println(methodName + i);\n" + 4481 " break;\n" + 4482 " case 596 :\n" + 4483 " System.out.println(methodName + i);\n" + 4484 " break;\n" + 4485 " case 597 :\n" + 4486 " System.out.println(methodName + i);\n" + 4487 " break;\n" + 4488 " case 598 :\n" + 4489 " System.out.println(methodName + i);\n" + 4490 " break;\n" + 4491 " case 599 :\n" + 4492 " System.out.println(methodName + i);\n" + 4493 " break;\n" + 4494 " case 600 :\n" + 4495 " System.out.println(methodName + i);\n" + 4496 " break;\n" + 4497 " case 601 :\n" + 4498 " System.out.println(methodName + i);\n" + 4499 " break;\n" + 4500 " case 602 :\n" + 4501 " System.out.println(methodName + i);\n" + 4502 " break;\n" + 4503 " case 603 :\n" + 4504 " System.out.println(methodName + i);\n" + 4505 " break;\n" + 4506 " case 604 :\n" + 4507 " System.out.println(methodName + i);\n" + 4508 " break;\n" + 4509 " case 605 :\n" + 4510 " System.out.println(methodName + i);\n" + 4511 " break;\n" + 4512 " case 606 :\n" + 4513 " System.out.println(methodName + i);\n" + 4514 " break;\n" + 4515 " case 607 :\n" + 4516 " System.out.println(methodName + i);\n" + 4517 " break;\n" + 4518 " case 608 :\n" + 4519 " System.out.println(methodName + i);\n" + 4520 " break;\n" + 4521 " case 609 :\n" + 4522 " System.out.println(methodName + i);\n" + 4523 " break;\n" + 4524 " case 610 :\n" + 4525 " System.out.println(methodName + i);\n" + 4526 " break;\n" + 4527 " case 611 :\n" + 4528 " System.out.println(methodName + i);\n" + 4529 " break;\n" + 4530 " case 612 :\n" + 4531 " System.out.println(methodName + i);\n" + 4532 " break;\n" + 4533 " case 613 :\n" + 4534 " System.out.println(methodName + i);\n" + 4535 " break;\n" + 4536 " case 614 :\n" + 4537 " System.out.println(methodName + i);\n" + 4538 " break;\n" + 4539 " case 615 :\n" + 4540 " System.out.println(methodName + i);\n" + 4541 " break;\n" + 4542 " case 616 :\n" + 4543 " System.out.println(methodName + i);\n" + 4544 " break;\n" + 4545 " case 617 :\n" + 4546 " System.out.println(methodName + i);\n" + 4547 " break;\n" + 4548 " case 618 :\n" + 4549 " System.out.println(methodName + i);\n" + 4550 " break;\n" + 4551 " case 619 :\n" + 4552 " System.out.println(methodName + i);\n" + 4553 " break;\n" + 4554 " case 620 :\n" + 4555 " System.out.println(methodName + i);\n" + 4556 " break;\n" + 4557 " case 621 :\n" + 4558 " System.out.println(methodName + i);\n" + 4559 " break;\n" + 4560 " case 622 :\n" + 4561 " System.out.println(methodName + i);\n" + 4562 " break;\n" + 4563 " case 623 :\n" + 4564 " System.out.println(methodName + i);\n" + 4565 " break;\n" + 4566 " case 624 :\n" + 4567 " System.out.println(methodName + i);\n" + 4568 " break;\n" + 4569 " case 625 :\n" + 4570 " System.out.println(methodName + i);\n" + 4571 " break;\n" + 4572 " case 626 :\n" + 4573 " System.out.println(methodName + i);\n" + 4574 " break;\n" + 4575 " case 627 :\n" + 4576 " System.out.println(methodName + i);\n" + 4577 " break;\n" + 4578 " case 628 :\n" + 4579 " System.out.println(methodName + i);\n" + 4580 " break;\n" + 4581 " case 629 :\n" + 4582 " System.out.println(methodName + i);\n" + 4583 " break;\n" + 4584 " case 630 :\n" + 4585 " System.out.println(methodName + i);\n" + 4586 " break;\n" + 4587 " case 631 :\n" + 4588 " System.out.println(methodName + i);\n" + 4589 " break;\n" + 4590 " case 632 :\n" + 4591 " System.out.println(methodName + i);\n" + 4592 " break;\n" + 4593 " case 633 :\n" + 4594 " System.out.println(methodName + i);\n" + 4595 " break;\n" + 4596 " case 634 :\n" + 4597 " System.out.println(methodName + i);\n" + 4598 " break;\n" + 4599 " case 635 :\n" + 4600 " System.out.println(methodName + i);\n" + 4601 " break;\n" + 4602 " case 636 :\n" + 4603 " System.out.println(methodName + i);\n" + 4604 " break;\n" + 4605 " case 637 :\n" + 4606 " System.out.println(methodName + i);\n" + 4607 " break;\n" + 4608 " case 638 :\n" + 4609 " System.out.println(methodName + i);\n" + 4610 " break;\n" + 4611 " case 639 :\n" + 4612 " System.out.println(methodName + i);\n" + 4613 " break;\n" + 4614 " case 640 :\n" + 4615 " System.out.println(methodName + i);\n" + 4616 " break;\n" + 4617 " case 641 :\n" + 4618 " System.out.println(methodName + i);\n" + 4619 " break;\n" + 4620 " case 642 :\n" + 4621 " System.out.println(methodName + i);\n" + 4622 " break;\n" + 4623 " case 643 :\n" + 4624 " System.out.println(methodName + i);\n" + 4625 " break;\n" + 4626 " case 644 :\n" + 4627 " System.out.println(methodName + i);\n" + 4628 " break;\n" + 4629 " case 645 :\n" + 4630 " System.out.println(methodName + i);\n" + 4631 " break;\n" + 4632 " case 646 :\n" + 4633 " System.out.println(methodName + i);\n" + 4634 " break;\n" + 4635 " case 647 :\n" + 4636 " System.out.println(methodName + i);\n" + 4637 " break;\n" + 4638 " case 648 :\n" + 4639 " System.out.println(methodName + i);\n" + 4640 " break;\n" + 4641 " case 649 :\n" + 4642 " System.out.println(methodName + i);\n" + 4643 " break;\n" + 4644 " case 650 :\n" + 4645 " System.out.println(methodName + i);\n" + 4646 " break;\n" + 4647 " case 651 :\n" + 4648 " System.out.println(methodName + i);\n" + 4649 " break;\n" + 4650 " case 652 :\n" + 4651 " System.out.println(methodName + i);\n" + 4652 " break;\n" + 4653 " case 653 :\n" + 4654 " System.out.println(methodName + i);\n" + 4655 " break;\n" + 4656 " case 654 :\n" + 4657 " System.out.println(methodName + i);\n" + 4658 " break;\n" + 4659 " case 655 :\n" + 4660 " System.out.println(methodName + i);\n" + 4661 " break;\n" + 4662 " case 656 :\n" + 4663 " System.out.println(methodName + i);\n" + 4664 " break;\n" + 4665 " case 657 :\n" + 4666 " System.out.println(methodName + i);\n" + 4667 " break;\n" + 4668 " case 658 :\n" + 4669 " System.out.println(methodName + i);\n" + 4670 " break;\n" + 4671 " case 659 :\n" + 4672 " System.out.println(methodName + i);\n" + 4673 " break;\n" + 4674 " case 660 :\n" + 4675 " System.out.println(methodName + i);\n" + 4676 " break;\n" + 4677 " case 661 :\n" + 4678 " System.out.println(methodName + i);\n" + 4679 " break;\n" + 4680 " case 662 :\n" + 4681 " System.out.println(methodName + i);\n" + 4682 " break;\n" + 4683 " case 663 :\n" + 4684 " System.out.println(methodName + i);\n" + 4685 " break;\n" + 4686 " case 664 :\n" + 4687 " System.out.println(methodName + i);\n" + 4688 " break;\n" + 4689 " case 665 :\n" + 4690 " System.out.println(methodName + i);\n" + 4691 " break;\n" + 4692 " case 666 :\n" + 4693 " System.out.println(methodName + i);\n" + 4694 " break;\n" + 4695 " case 667 :\n" + 4696 " System.out.println(methodName + i);\n" + 4697 " break;\n" + 4698 " case 668 :\n" + 4699 " System.out.println(methodName + i);\n" + 4700 " break;\n" + 4701 " case 669 :\n" + 4702 " System.out.println(methodName + i);\n" + 4703 " break;\n" + 4704 " case 670 :\n" + 4705 " System.out.println(methodName + i);\n" + 4706 " break;\n" + 4707 " case 671 :\n" + 4708 " System.out.println(methodName + i);\n" + 4709 " break;\n" + 4710 " case 672 :\n" + 4711 " System.out.println(methodName + i);\n" + 4712 " break;\n" + 4713 " case 673 :\n" + 4714 " System.out.println(methodName + i);\n" + 4715 " break;\n" + 4716 " case 674 :\n" + 4717 " System.out.println(methodName + i);\n" + 4718 " break;\n" + 4719 " case 675 :\n" + 4720 " System.out.println(methodName + i);\n" + 4721 " break;\n" + 4722 " case 676 :\n" + 4723 " System.out.println(methodName + i);\n" + 4724 " break;\n" + 4725 " case 677 :\n" + 4726 " System.out.println(methodName + i);\n" + 4727 " break;\n" + 4728 " case 678 :\n" + 4729 " System.out.println(methodName + i);\n" + 4730 " break;\n" + 4731 " case 679 :\n" + 4732 " System.out.println(methodName + i);\n" + 4733 " break;\n" + 4734 " case 680 :\n" + 4735 " System.out.println(methodName + i);\n" + 4736 " break;\n" + 4737 " case 681 :\n" + 4738 " System.out.println(methodName + i);\n" + 4739 " break;\n" + 4740 " case 682 :\n" + 4741 " System.out.println(methodName + i);\n" + 4742 " break;\n" + 4743 " case 683 :\n" + 4744 " System.out.println(methodName + i);\n" + 4745 " break;\n" + 4746 " case 684 :\n" + 4747 " System.out.println(methodName + i);\n" + 4748 " break;\n" + 4749 " case 685 :\n" + 4750 " System.out.println(methodName + i);\n" + 4751 " break;\n" + 4752 " case 686 :\n" + 4753 " System.out.println(methodName + i);\n" + 4754 " break;\n" + 4755 " case 687 :\n" + 4756 " System.out.println(methodName + i);\n" + 4757 " break;\n" + 4758 " case 688 :\n" + 4759 " System.out.println(methodName + i);\n" + 4760 " break;\n" + 4761 " case 689 :\n" + 4762 " System.out.println(methodName + i);\n" + 4763 " break;\n" + 4764 " case 690 :\n" + 4765 " System.out.println(methodName + i);\n" + 4766 " break;\n" + 4767 " case 691 :\n" + 4768 " System.out.println(methodName + i);\n" + 4769 " break;\n" + 4770 " case 692 :\n" + 4771 " System.out.println(methodName + i);\n" + 4772 " break;\n" + 4773 " case 693 :\n" + 4774 " System.out.println(methodName + i);\n" + 4775 " break;\n" + 4776 " case 694 :\n" + 4777 " System.out.println(methodName + i);\n" + 4778 " break;\n" + 4779 " case 695 :\n" + 4780 " System.out.println(methodName + i);\n" + 4781 " break;\n" + 4782 " case 696 :\n" + 4783 " System.out.println(methodName + i);\n" + 4784 " break;\n" + 4785 " case 697 :\n" + 4786 " System.out.println(methodName + i);\n" + 4787 " break;\n" + 4788 " case 698 :\n" + 4789 " System.out.println(methodName + i);\n" + 4790 " break;\n" + 4791 " case 699 :\n" + 4792 " System.out.println(methodName + i);\n" + 4793 " break;\n" + 4794 " case 700 :\n" + 4795 " System.out.println(methodName + i);\n" + 4796 " break;\n" + 4797 " case 701 :\n" + 4798 " System.out.println(methodName + i);\n" + 4799 " break;\n" + 4800 " case 702 :\n" + 4801 " System.out.println(methodName + i);\n" + 4802 " break;\n" + 4803 " case 703 :\n" + 4804 " System.out.println(methodName + i);\n" + 4805 " break;\n" + 4806 " case 704 :\n" + 4807 " System.out.println(methodName + i);\n" + 4808 " break;\n" + 4809 " case 705 :\n" + 4810 " System.out.println(methodName + i);\n" + 4811 " break;\n" + 4812 " case 706 :\n" + 4813 " System.out.println(methodName + i);\n" + 4814 " break;\n" + 4815 " case 707 :\n" + 4816 " System.out.println(methodName + i);\n" + 4817 " break;\n" + 4818 " case 708 :\n" + 4819 " System.out.println(methodName + i);\n" + 4820 " break;\n" + 4821 " case 709 :\n" + 4822 " System.out.println(methodName + i);\n" + 4823 " break;\n" + 4824 " case 710 :\n" + 4825 " System.out.println(methodName + i);\n" + 4826 " break;\n" + 4827 " case 711 :\n" + 4828 " System.out.println(methodName + i);\n" + 4829 " break;\n" + 4830 " case 712 :\n" + 4831 " System.out.println(methodName + i);\n" + 4832 " break;\n" + 4833 " case 713 :\n" + 4834 " System.out.println(methodName + i);\n" + 4835 " break;\n" + 4836 " case 714 :\n" + 4837 " System.out.println(methodName + i);\n" + 4838 " break;\n" + 4839 " case 715 :\n" + 4840 " System.out.println(methodName + i);\n" + 4841 " break;\n" + 4842 " case 716 :\n" + 4843 " System.out.println(methodName + i);\n" + 4844 " break;\n" + 4845 " case 717 :\n" + 4846 " System.out.println(methodName + i);\n" + 4847 " break;\n" + 4848 " case 718 :\n" + 4849 " System.out.println(methodName + i);\n" + 4850 " break;\n" + 4851 " case 719 :\n" + 4852 " System.out.println(methodName + i);\n" + 4853 " break;\n" + 4854 " case 720 :\n" + 4855 " System.out.println(methodName + i);\n" + 4856 " break;\n" + 4857 " case 721 :\n" + 4858 " System.out.println(methodName + i);\n" + 4859 " break;\n" + 4860 " case 722 :\n" + 4861 " System.out.println(methodName + i);\n" + 4862 " break;\n" + 4863 " case 723 :\n" + 4864 " System.out.println(methodName + i);\n" + 4865 " break;\n" + 4866 " case 724 :\n" + 4867 " System.out.println(methodName + i);\n" + 4868 " break;\n" + 4869 " case 725 :\n" + 4870 " System.out.println(methodName + i);\n" + 4871 " break;\n" + 4872 " case 726 :\n" + 4873 " System.out.println(methodName + i);\n" + 4874 " break;\n" + 4875 " case 727 :\n" + 4876 " System.out.println(methodName + i);\n" + 4877 " break;\n" + 4878 " case 728 :\n" + 4879 " System.out.println(methodName + i);\n" + 4880 " break;\n" + 4881 " case 729 :\n" + 4882 " System.out.println(methodName + i);\n" + 4883 " break;\n" + 4884 " case 730 :\n" + 4885 " System.out.println(methodName + i);\n" + 4886 " break;\n" + 4887 " case 731 :\n" + 4888 " System.out.println(methodName + i);\n" + 4889 " break;\n" + 4890 " case 732 :\n" + 4891 " System.out.println(methodName + i);\n" + 4892 " break;\n" + 4893 " case 733 :\n" + 4894 " System.out.println(methodName + i);\n" + 4895 " break;\n" + 4896 " case 734 :\n" + 4897 " System.out.println(methodName + i);\n" + 4898 " break;\n" + 4899 " case 735 :\n" + 4900 " System.out.println(methodName + i);\n" + 4901 " break;\n" + 4902 " case 736 :\n" + 4903 " System.out.println(methodName + i);\n" + 4904 " break;\n" + 4905 " case 737 :\n" + 4906 " System.out.println(methodName + i);\n" + 4907 " break;\n" + 4908 " case 738 :\n" + 4909 " System.out.println(methodName + i);\n" + 4910 " break;\n" + 4911 " case 739 :\n" + 4912 " System.out.println(methodName + i);\n" + 4913 " break;\n" + 4914 " case 740 :\n" + 4915 " System.out.println(methodName + i);\n" + 4916 " break;\n" + 4917 " case 741 :\n" + 4918 " System.out.println(methodName + i);\n" + 4919 " break;\n" + 4920 " case 742 :\n" + 4921 " System.out.println(methodName + i);\n" + 4922 " break;\n" + 4923 " case 743 :\n" + 4924 " System.out.println(methodName + i);\n" + 4925 " break;\n" + 4926 " case 744 :\n" + 4927 " System.out.println(methodName + i);\n" + 4928 " break;\n" + 4929 " case 745 :\n" + 4930 " System.out.println(methodName + i);\n" + 4931 " break;\n" + 4932 " case 746 :\n" + 4933 " System.out.println(methodName + i);\n" + 4934 " break;\n" + 4935 " case 747 :\n" + 4936 " System.out.println(methodName + i);\n" + 4937 " break;\n" + 4938 " case 748 :\n" + 4939 " System.out.println(methodName + i);\n" + 4940 " break;\n" + 4941 " case 749 :\n" + 4942 " System.out.println(methodName + i);\n" + 4943 " break;\n" + 4944 " case 750 :\n" + 4945 " System.out.println(methodName + i);\n" + 4946 " break;\n" + 4947 " case 751 :\n" + 4948 " System.out.println(methodName + i);\n" + 4949 " break;\n" + 4950 " case 752 :\n" + 4951 " System.out.println(methodName + i);\n" + 4952 " break;\n" + 4953 " case 753 :\n" + 4954 " System.out.println(methodName + i);\n" + 4955 " break;\n" + 4956 " case 754 :\n" + 4957 " System.out.println(methodName + i);\n" + 4958 " break;\n" + 4959 " case 755 :\n" + 4960 " System.out.println(methodName + i);\n" + 4961 " break;\n" + 4962 " case 756 :\n" + 4963 " System.out.println(methodName + i);\n" + 4964 " break;\n" + 4965 " case 757 :\n" + 4966 " System.out.println(methodName + i);\n" + 4967 " break;\n" + 4968 " case 758 :\n" + 4969 " System.out.println(methodName + i);\n" + 4970 " break;\n" + 4971 " case 759 :\n" + 4972 " System.out.println(methodName + i);\n" + 4973 " break;\n" + 4974 " case 760 :\n" + 4975 " System.out.println(methodName + i);\n" + 4976 " break;\n" + 4977 " case 761 :\n" + 4978 " System.out.println(methodName + i);\n" + 4979 " break;\n" + 4980 " case 762 :\n" + 4981 " System.out.println(methodName + i);\n" + 4982 " break;\n" + 4983 " case 763 :\n" + 4984 " System.out.println(methodName + i);\n" + 4985 " break;\n" + 4986 " case 764 :\n" + 4987 " System.out.println(methodName + i);\n" + 4988 " break;\n" + 4989 " case 765 :\n" + 4990 " System.out.println(methodName + i);\n" + 4991 " break;\n" + 4992 " case 766 :\n" + 4993 " System.out.println(methodName + i);\n" + 4994 " break;\n" + 4995 " case 767 :\n" + 4996 " System.out.println(methodName + i);\n" + 4997 " break;\n" + 4998 " case 768 :\n" + 4999 " System.out.println(methodName + i);\n" + 5000 " break;\n" + 5001 " case 769 :\n" + 5002 " System.out.println(methodName + i);\n" + 5003 " break;\n" + 5004 " case 770 :\n" + 5005 " System.out.println(methodName + i);\n" + 5006 " break;\n" + 5007 " case 771 :\n" + 5008 " System.out.println(methodName + i);\n" + 5009 " break;\n" + 5010 " case 772 :\n" + 5011 " System.out.println(methodName + i);\n" + 5012 " break;\n" + 5013 " case 773 :\n" + 5014 " System.out.println(methodName + i);\n" + 5015 " break;\n" + 5016 " case 774 :\n" + 5017 " System.out.println(methodName + i);\n" + 5018 " break;\n" + 5019 " case 775 :\n" + 5020 " System.out.println(methodName + i);\n" + 5021 " break;\n" + 5022 " case 776 :\n" + 5023 " System.out.println(methodName + i);\n" + 5024 " break;\n" + 5025 " case 777 :\n" + 5026 " System.out.println(methodName + i);\n" + 5027 " break;\n" + 5028 " case 778 :\n" + 5029 " System.out.println(methodName + i);\n" + 5030 " break;\n" + 5031 " case 779 :\n" + 5032 " System.out.println(methodName + i);\n" + 5033 " break;\n" + 5034 " case 780 :\n" + 5035 " System.out.println(methodName + i);\n" + 5036 " break;\n" + 5037 " case 781 :\n" + 5038 " System.out.println(methodName + i);\n" + 5039 " break;\n" + 5040 " case 782 :\n" + 5041 " System.out.println(methodName + i);\n" + 5042 " break;\n" + 5043 " case 783 :\n" + 5044 " System.out.println(methodName + i);\n" + 5045 " break;\n" + 5046 " case 784 :\n" + 5047 " System.out.println(methodName + i);\n" + 5048 " break;\n" + 5049 " case 785 :\n" + 5050 " System.out.println(methodName + i);\n" + 5051 " break;\n" + 5052 " case 786 :\n" + 5053 " System.out.println(methodName + i);\n" + 5054 " break;\n" + 5055 " case 787 :\n" + 5056 " System.out.println(methodName + i);\n" + 5057 " break;\n" + 5058 " case 788 :\n" + 5059 " System.out.println(methodName + i);\n" + 5060 " break;\n" + 5061 " case 789 :\n" + 5062 " System.out.println(methodName + i);\n" + 5063 " break;\n" + 5064 " case 790 :\n" + 5065 " System.out.println(methodName + i);\n" + 5066 " break;\n" + 5067 " case 791 :\n" + 5068 " System.out.println(methodName + i);\n" + 5069 " break;\n" + 5070 " case 792 :\n" + 5071 " System.out.println(methodName + i);\n" + 5072 " break;\n" + 5073 " case 793 :\n" + 5074 " System.out.println(methodName + i);\n" + 5075 " break;\n" + 5076 " case 794 :\n" + 5077 " System.out.println(methodName + i);\n" + 5078 " break;\n" + 5079 " case 795 :\n" + 5080 " System.out.println(methodName + i);\n" + 5081 " break;\n" + 5082 " case 796 :\n" + 5083 " System.out.println(methodName + i);\n" + 5084 " break;\n" + 5085 " case 797 :\n" + 5086 " System.out.println(methodName + i);\n" + 5087 " break;\n" + 5088 " case 798 :\n" + 5089 " System.out.println(methodName + i);\n" + 5090 " break;\n" + 5091 " case 799 :\n" + 5092 " System.out.println(methodName + i);\n" + 5093 " break;\n" + 5094 " case 800 :\n" + 5095 " System.out.println(methodName + i);\n" + 5096 " break;\n" + 5097 " case 801 :\n" + 5098 " System.out.println(methodName + i);\n" + 5099 " break;\n" + 5100 " case 802 :\n" + 5101 " System.out.println(methodName + i);\n" + 5102 " break;\n" + 5103 " case 803 :\n" + 5104 " System.out.println(methodName + i);\n" + 5105 " break;\n" + 5106 " case 804 :\n" + 5107 " System.out.println(methodName + i);\n" + 5108 " break;\n" + 5109 " case 805 :\n" + 5110 " System.out.println(methodName + i);\n" + 5111 " break;\n" + 5112 " case 806 :\n" + 5113 " System.out.println(methodName + i);\n" + 5114 " break;\n" + 5115 " case 807 :\n" + 5116 " System.out.println(methodName + i);\n" + 5117 " break;\n" + 5118 " case 808 :\n" + 5119 " System.out.println(methodName + i);\n" + 5120 " break;\n" + 5121 " case 809 :\n" + 5122 " System.out.println(methodName + i);\n" + 5123 " break;\n" + 5124 " case 810 :\n" + 5125 " System.out.println(methodName + i);\n" + 5126 " break;\n" + 5127 " case 811 :\n" + 5128 " System.out.println(methodName + i);\n" + 5129 " break;\n" + 5130 " case 812 :\n" + 5131 " System.out.println(methodName + i);\n" + 5132 " break;\n" + 5133 " case 813 :\n" + 5134 " System.out.println(methodName + i);\n" + 5135 " break;\n" + 5136 " case 814 :\n" + 5137 " System.out.println(methodName + i);\n" + 5138 " break;\n" + 5139 " case 815 :\n" + 5140 " System.out.println(methodName + i);\n" + 5141 " break;\n" + 5142 " case 816 :\n" + 5143 " System.out.println(methodName + i);\n" + 5144 " break;\n" + 5145 " case 817 :\n" + 5146 " System.out.println(methodName + i);\n" + 5147 " break;\n" + 5148 " case 818 :\n" + 5149 " System.out.println(methodName + i);\n" + 5150 " break;\n" + 5151 " case 819 :\n" + 5152 " System.out.println(methodName + i);\n" + 5153 " break;\n" + 5154 " case 820 :\n" + 5155 " System.out.println(methodName + i);\n" + 5156 " break;\n" + 5157 " case 821 :\n" + 5158 " System.out.println(methodName + i);\n" + 5159 " break;\n" + 5160 " case 822 :\n" + 5161 " System.out.println(methodName + i);\n" + 5162 " break;\n" + 5163 " case 823 :\n" + 5164 " System.out.println(methodName + i);\n" + 5165 " break;\n" + 5166 " case 824 :\n" + 5167 " System.out.println(methodName + i);\n" + 5168 " break;\n" + 5169 " case 825 :\n" + 5170 " System.out.println(methodName + i);\n" + 5171 " break;\n" + 5172 " case 826 :\n" + 5173 " System.out.println(methodName + i);\n" + 5174 " break;\n" + 5175 " case 827 :\n" + 5176 " System.out.println(methodName + i);\n" + 5177 " break;\n" + 5178 " case 828 :\n" + 5179 " System.out.println(methodName + i);\n" + 5180 " break;\n" + 5181 " case 829 :\n" + 5182 " System.out.println(methodName + i);\n" + 5183 " break;\n" + 5184 " case 830 :\n" + 5185 " System.out.println(methodName + i);\n" + 5186 " break;\n" + 5187 " case 831 :\n" + 5188 " System.out.println(methodName + i);\n" + 5189 " break;\n" + 5190 " case 832 :\n" + 5191 " System.out.println(methodName + i);\n" + 5192 " break;\n" + 5193 " case 833 :\n" + 5194 " System.out.println(methodName + i);\n" + 5195 " break;\n" + 5196 " case 834 :\n" + 5197 " System.out.println(methodName + i);\n" + 5198 " break;\n" + 5199 " case 835 :\n" + 5200 " System.out.println(methodName + i);\n" + 5201 " break;\n" + 5202 " case 836 :\n" + 5203 " System.out.println(methodName + i);\n" + 5204 " break;\n" + 5205 " case 837 :\n" + 5206 " System.out.println(methodName + i);\n" + 5207 " break;\n" + 5208 " case 838 :\n" + 5209 " System.out.println(methodName + i);\n" + 5210 " break;\n" + 5211 " case 839 :\n" + 5212 " System.out.println(methodName + i);\n" + 5213 " break;\n" + 5214 " case 840 :\n" + 5215 " System.out.println(methodName + i);\n" + 5216 " break;\n" + 5217 " case 841 :\n" + 5218 " System.out.println(methodName + i);\n" + 5219 " break;\n" + 5220 " case 842 :\n" + 5221 " System.out.println(methodName + i);\n" + 5222 " break;\n" + 5223 " case 843 :\n" + 5224 " System.out.println(methodName + i);\n" + 5225 " break;\n" + 5226 " case 844 :\n" + 5227 " System.out.println(methodName + i);\n" + 5228 " break;\n" + 5229 " case 845 :\n" + 5230 " System.out.println(methodName + i);\n" + 5231 " break;\n" + 5232 " case 846 :\n" + 5233 " System.out.println(methodName + i);\n" + 5234 " break;\n" + 5235 " case 847 :\n" + 5236 " System.out.println(methodName + i);\n" + 5237 " break;\n" + 5238 " case 848 :\n" + 5239 " System.out.println(methodName + i);\n" + 5240 " break;\n" + 5241 " case 849 :\n" + 5242 " System.out.println(methodName + i);\n" + 5243 " break;\n" + 5244 " case 850 :\n" + 5245 " System.out.println(methodName + i);\n" + 5246 " break;\n" + 5247 " case 851 :\n" + 5248 " System.out.println(methodName + i);\n" + 5249 " break;\n" + 5250 " case 852 :\n" + 5251 " System.out.println(methodName + i);\n" + 5252 " break;\n" + 5253 " case 853 :\n" + 5254 " System.out.println(methodName + i);\n" + 5255 " break;\n" + 5256 " case 854 :\n" + 5257 " System.out.println(methodName + i);\n" + 5258 " break;\n" + 5259 " case 855 :\n" + 5260 " System.out.println(methodName + i);\n" + 5261 " break;\n" + 5262 " case 856 :\n" + 5263 " System.out.println(methodName + i);\n" + 5264 " break;\n" + 5265 " case 857 :\n" + 5266 " System.out.println(methodName + i);\n" + 5267 " break;\n" + 5268 " case 858 :\n" + 5269 " System.out.println(methodName + i);\n" + 5270 " break;\n" + 5271 " case 859 :\n" + 5272 " System.out.println(methodName + i);\n" + 5273 " break;\n" + 5274 " case 860 :\n" + 5275 " System.out.println(methodName + i);\n" + 5276 " break;\n" + 5277 " case 861 :\n" + 5278 " System.out.println(methodName + i);\n" + 5279 " break;\n" + 5280 " case 862 :\n" + 5281 " System.out.println(methodName + i);\n" + 5282 " break;\n" + 5283 " case 863 :\n" + 5284 " System.out.println(methodName + i);\n" + 5285 " break;\n" + 5286 " case 864 :\n" + 5287 " System.out.println(methodName + i);\n" + 5288 " break;\n" + 5289 " case 865 :\n" + 5290 " System.out.println(methodName + i);\n" + 5291 " break;\n" + 5292 " case 866 :\n" + 5293 " System.out.println(methodName + i);\n" + 5294 " break;\n" + 5295 " case 867 :\n" + 5296 " System.out.println(methodName + i);\n" + 5297 " break;\n" + 5298 " case 868 :\n" + 5299 " System.out.println(methodName + i);\n" + 5300 " break;\n" + 5301 " case 869 :\n" + 5302 " System.out.println(methodName + i);\n" + 5303 " break;\n" + 5304 " case 870 :\n" + 5305 " System.out.println(methodName + i);\n" + 5306 " break;\n" + 5307 " case 871 :\n" + 5308 " System.out.println(methodName + i);\n" + 5309 " break;\n" + 5310 " case 872 :\n" + 5311 " System.out.println(methodName + i);\n" + 5312 " break;\n" + 5313 " case 873 :\n" + 5314 " System.out.println(methodName + i);\n" + 5315 " break;\n" + 5316 " case 874 :\n" + 5317 " System.out.println(methodName + i);\n" + 5318 " break;\n" + 5319 " case 875 :\n" + 5320 " System.out.println(methodName + i);\n" + 5321 " break;\n" + 5322 " case 876 :\n" + 5323 " System.out.println(methodName + i);\n" + 5324 " break;\n" + 5325 " case 877 :\n" + 5326 " System.out.println(methodName + i);\n" + 5327 " break;\n" + 5328 " case 878 :\n" + 5329 " System.out.println(methodName + i);\n" + 5330 " break;\n" + 5331 " case 879 :\n" + 5332 " System.out.println(methodName + i);\n" + 5333 " break;\n" + 5334 " case 880 :\n" + 5335 " System.out.println(methodName + i);\n" + 5336 " break;\n" + 5337 " case 881 :\n" + 5338 " System.out.println(methodName + i);\n" + 5339 " break;\n" + 5340 " case 882 :\n" + 5341 " System.out.println(methodName + i);\n" + 5342 " break;\n" + 5343 " case 883 :\n" + 5344 " System.out.println(methodName + i);\n" + 5345 " break;\n" + 5346 " case 884 :\n" + 5347 " System.out.println(methodName + i);\n" + 5348 " break;\n" + 5349 " case 885 :\n" + 5350 " System.out.println(methodName + i);\n" + 5351 " break;\n" + 5352 " case 886 :\n" + 5353 " System.out.println(methodName + i);\n" + 5354 " break;\n" + 5355 " case 887 :\n" + 5356 " System.out.println(methodName + i);\n" + 5357 " break;\n" + 5358 " case 888 :\n" + 5359 " System.out.println(methodName + i);\n" + 5360 " break;\n" + 5361 " case 889 :\n" + 5362 " System.out.println(methodName + i);\n" + 5363 " break;\n" + 5364 " case 890 :\n" + 5365 " System.out.println(methodName + i);\n" + 5366 " break;\n" + 5367 " case 891 :\n" + 5368 " System.out.println(methodName + i);\n" + 5369 " break;\n" + 5370 " case 892 :\n" + 5371 " System.out.println(methodName + i);\n" + 5372 " break;\n" + 5373 " case 893 :\n" + 5374 " System.out.println(methodName + i);\n" + 5375 " break;\n" + 5376 " case 894 :\n" + 5377 " System.out.println(methodName + i);\n" + 5378 " break;\n" + 5379 " case 895 :\n" + 5380 " System.out.println(methodName + i);\n" + 5381 " break;\n" + 5382 " case 896 :\n" + 5383 " System.out.println(methodName + i);\n" + 5384 " break;\n" + 5385 " case 897 :\n" + 5386 " System.out.println(methodName + i);\n" + 5387 " break;\n" + 5388 " case 898 :\n" + 5389 " System.out.println(methodName + i);\n" + 5390 " break;\n" + 5391 " case 899 :\n" + 5392 " System.out.println(methodName + i);\n" + 5393 " break;\n" + 5394 " case 900 :\n" + 5395 " System.out.println(methodName + i);\n" + 5396 " break;\n" + 5397 " case 901 :\n" + 5398 " System.out.println(methodName + i);\n" + 5399 " break;\n" + 5400 " case 902 :\n" + 5401 " System.out.println(methodName + i);\n" + 5402 " break;\n" + 5403 " case 903 :\n" + 5404 " System.out.println(methodName + i);\n" + 5405 " break;\n" + 5406 " case 904 :\n" + 5407 " System.out.println(methodName + i);\n" + 5408 " break;\n" + 5409 " case 905 :\n" + 5410 " System.out.println(methodName + i);\n" + 5411 " break;\n" + 5412 " case 906 :\n" + 5413 " System.out.println(methodName + i);\n" + 5414 " break;\n" + 5415 " case 907 :\n" + 5416 " System.out.println(methodName + i);\n" + 5417 " break;\n" + 5418 " case 908 :\n" + 5419 " System.out.println(methodName + i);\n" + 5420 " break;\n" + 5421 " case 909 :\n" + 5422 " System.out.println(methodName + i);\n" + 5423 " break;\n" + 5424 " case 910 :\n" + 5425 " System.out.println(methodName + i);\n" + 5426 " break;\n" + 5427 " case 911 :\n" + 5428 " System.out.println(methodName + i);\n" + 5429 " break;\n" + 5430 " case 912 :\n" + 5431 " System.out.println(methodName + i);\n" + 5432 " break;\n" + 5433 " case 913 :\n" + 5434 " System.out.println(methodName + i);\n" + 5435 " break;\n" + 5436 " case 914 :\n" + 5437 " System.out.println(methodName + i);\n" + 5438 " break;\n" + 5439 " case 915 :\n" + 5440 " System.out.println(methodName + i);\n" + 5441 " break;\n" + 5442 " case 916 :\n" + 5443 " System.out.println(methodName + i);\n" + 5444 " break;\n" + 5445 " case 917 :\n" + 5446 " System.out.println(methodName + i);\n" + 5447 " break;\n" + 5448 " case 918 :\n" + 5449 " System.out.println(methodName + i);\n" + 5450 " break;\n" + 5451 " case 919 :\n" + 5452 " System.out.println(methodName + i);\n" + 5453 " break;\n" + 5454 " case 920 :\n" + 5455 " System.out.println(methodName + i);\n" + 5456 " break;\n" + 5457 " case 921 :\n" + 5458 " System.out.println(methodName + i);\n" + 5459 " break;\n" + 5460 " case 922 :\n" + 5461 " System.out.println(methodName + i);\n" + 5462 " break;\n" + 5463 " case 923 :\n" + 5464 " System.out.println(methodName + i);\n" + 5465 " break;\n" + 5466 " case 924 :\n" + 5467 " System.out.println(methodName + i);\n" + 5468 " break;\n" + 5469 " case 925 :\n" + 5470 " System.out.println(methodName + i);\n" + 5471 " break;\n" + 5472 " case 926 :\n" + 5473 " System.out.println(methodName + i);\n" + 5474 " break;\n" + 5475 " case 927 :\n" + 5476 " System.out.println(methodName + i);\n" + 5477 " break;\n" + 5478 " case 928 :\n" + 5479 " System.out.println(methodName + i);\n" + 5480 " break;\n" + 5481 " case 929 :\n" + 5482 " System.out.println(methodName + i);\n" + 5483 " break;\n" + 5484 " case 930 :\n" + 5485 " System.out.println(methodName + i);\n" + 5486 " break;\n" + 5487 " case 931 :\n" + 5488 " System.out.println(methodName + i);\n" + 5489 " break;\n" + 5490 " case 932 :\n" + 5491 " System.out.println(methodName + i);\n" + 5492 " break;\n" + 5493 " case 933 :\n" + 5494 " System.out.println(methodName + i);\n" + 5495 " break;\n" + 5496 " case 934 :\n" + 5497 " System.out.println(methodName + i);\n" + 5498 " break;\n" + 5499 " case 935 :\n" + 5500 " System.out.println(methodName + i);\n" + 5501 " break;\n" + 5502 " case 936 :\n" + 5503 " System.out.println(methodName + i);\n" + 5504 " break;\n" + 5505 " case 937 :\n" + 5506 " System.out.println(methodName + i);\n" + 5507 " break;\n" + 5508 " case 938 :\n" + 5509 " System.out.println(methodName + i);\n" + 5510 " break;\n" + 5511 " case 939 :\n" + 5512 " System.out.println(methodName + i);\n" + 5513 " break;\n" + 5514 " case 940 :\n" + 5515 " System.out.println(methodName + i);\n" + 5516 " break;\n" + 5517 " case 941 :\n" + 5518 " System.out.println(methodName + i);\n" + 5519 " break;\n" + 5520 " case 942 :\n" + 5521 " System.out.println(methodName + i);\n" + 5522 " break;\n" + 5523 " case 943 :\n" + 5524 " System.out.println(methodName + i);\n" + 5525 " break;\n" + 5526 " case 944 :\n" + 5527 " System.out.println(methodName + i);\n" + 5528 " break;\n" + 5529 " case 945 :\n" + 5530 " System.out.println(methodName + i);\n" + 5531 " break;\n" + 5532 " case 946 :\n" + 5533 " System.out.println(methodName + i);\n" + 5534 " break;\n" + 5535 " case 947 :\n" + 5536 " System.out.println(methodName + i);\n" + 5537 " break;\n" + 5538 " case 948 :\n" + 5539 " System.out.println(methodName + i);\n" + 5540 " break;\n" + 5541 " case 949 :\n" + 5542 " System.out.println(methodName + i);\n" + 5543 " break;\n" + 5544 " case 950 :\n" + 5545 " System.out.println(methodName + i);\n" + 5546 " break;\n" + 5547 " case 951 :\n" + 5548 " System.out.println(methodName + i);\n" + 5549 " break;\n" + 5550 " case 952 :\n" + 5551 " System.out.println(methodName + i);\n" + 5552 " break;\n" + 5553 " case 953 :\n" + 5554 " System.out.println(methodName + i);\n" + 5555 " break;\n" + 5556 " case 954 :\n" + 5557 " System.out.println(methodName + i);\n" + 5558 " break;\n" + 5559 " case 955 :\n" + 5560 " System.out.println(methodName + i);\n" + 5561 " break;\n" + 5562 " case 956 :\n" + 5563 " System.out.println(methodName + i);\n" + 5564 " break;\n" + 5565 " case 957 :\n" + 5566 " System.out.println(methodName + i);\n" + 5567 " break;\n" + 5568 " case 958 :\n" + 5569 " System.out.println(methodName + i);\n" + 5570 " break;\n" + 5571 " case 959 :\n" + 5572 " System.out.println(methodName + i);\n" + 5573 " break;\n" + 5574 " case 960 :\n" + 5575 " System.out.println(methodName + i);\n" + 5576 " break;\n" + 5577 " case 961 :\n" + 5578 " System.out.println(methodName + i);\n" + 5579 " break;\n" + 5580 " case 962 :\n" + 5581 " System.out.println(methodName + i);\n" + 5582 " break;\n" + 5583 " case 963 :\n" + 5584 " System.out.println(methodName + i);\n" + 5585 " break;\n" + 5586 " case 964 :\n" + 5587 " System.out.println(methodName + i);\n" + 5588 " break;\n" + 5589 " case 965 :\n" + 5590 " System.out.println(methodName + i);\n" + 5591 " break;\n" + 5592 " case 966 :\n" + 5593 " System.out.println(methodName + i);\n" + 5594 " break;\n" + 5595 " case 967 :\n" + 5596 " System.out.println(methodName + i);\n" + 5597 " break;\n" + 5598 " case 968 :\n" + 5599 " System.out.println(methodName + i);\n" + 5600 " break;\n" + 5601 " case 969 :\n" + 5602 " System.out.println(methodName + i);\n" + 5603 " break;\n" + 5604 " case 970 :\n" + 5605 " System.out.println(methodName + i);\n" + 5606 " break;\n" + 5607 " case 971 :\n" + 5608 " System.out.println(methodName + i);\n" + 5609 " break;\n" + 5610 " case 972 :\n" + 5611 " System.out.println(methodName + i);\n" + 5612 " break;\n" + 5613 " case 973 :\n" + 5614 " System.out.println(methodName + i);\n" + 5615 " break;\n" + 5616 " case 974 :\n" + 5617 " System.out.println(methodName + i);\n" + 5618 " break;\n" + 5619 " case 975 :\n" + 5620 " System.out.println(methodName + i);\n" + 5621 " break;\n" + 5622 " case 976 :\n" + 5623 " System.out.println(methodName + i);\n" + 5624 " break;\n" + 5625 " case 977 :\n" + 5626 " System.out.println(methodName + i);\n" + 5627 " break;\n" + 5628 " case 978 :\n" + 5629 " System.out.println(methodName + i);\n" + 5630 " break;\n" + 5631 " case 979 :\n" + 5632 " System.out.println(methodName + i);\n" + 5633 " break;\n" + 5634 " case 980 :\n" + 5635 " System.out.println(methodName + i);\n" + 5636 " break;\n" + 5637 " case 981 :\n" + 5638 " System.out.println(methodName + i);\n" + 5639 " break;\n" + 5640 " case 982 :\n" + 5641 " System.out.println(methodName + i);\n" + 5642 " break;\n" + 5643 " case 983 :\n" + 5644 " System.out.println(methodName + i);\n" + 5645 " break;\n" + 5646 " case 984 :\n" + 5647 " System.out.println(methodName + i);\n" + 5648 " break;\n" + 5649 " case 985 :\n" + 5650 " System.out.println(methodName + i);\n" + 5651 " break;\n" + 5652 " case 986 :\n" + 5653 " System.out.println(methodName + i);\n" + 5654 " break;\n" + 5655 " case 987 :\n" + 5656 " System.out.println(methodName + i);\n" + 5657 " break;\n" + 5658 " case 988 :\n" + 5659 " System.out.println(methodName + i);\n" + 5660 " break;\n" + 5661 " case 989 :\n" + 5662 " System.out.println(methodName + i);\n" + 5663 " break;\n" + 5664 " case 990 :\n" + 5665 " System.out.println(methodName + i);\n" + 5666 " break;\n" + 5667 " case 991 :\n" + 5668 " System.out.println(methodName + i);\n" + 5669 " break;\n" + 5670 " case 992 :\n" + 5671 " System.out.println(methodName + i);\n" + 5672 " break;\n" + 5673 " case 993 :\n" + 5674 " System.out.println(methodName + i);\n" + 5675 " break;\n" + 5676 " case 994 :\n" + 5677 " System.out.println(methodName + i);\n" + 5678 " break;\n" + 5679 " case 995 :\n" + 5680 " System.out.println(methodName + i);\n" + 5681 " break;\n" + 5682 " case 996 :\n" + 5683 " System.out.println(methodName + i);\n" + 5684 " break;\n" + 5685 " case 997 :\n" + 5686 " System.out.println(methodName + i);\n" + 5687 " break;\n" + 5688 " case 998 :\n" + 5689 " System.out.println(methodName + i);\n" + 5690 " break;\n" + 5691 " case 999 :\n" + 5692 " System.out.println(methodName + i);\n" + 5693 " break;\n" + 5694 " case 1000 :\n" + 5695 " System.out.println(methodName + i);\n" + 5696 " break;\n" + 5697 " case 1001 :\n" + 5698 " System.out.println(methodName + i);\n" + 5699 " break;\n" + 5700 " case 1002 :\n" + 5701 " System.out.println(methodName + i);\n" + 5702 " break;\n" + 5703 " case 1003 :\n" + 5704 " System.out.println(methodName + i);\n" + 5705 " break;\n" + 5706 " case 1004 :\n" + 5707 " System.out.println(methodName + i);\n" + 5708 " break;\n" + 5709 " case 1005 :\n" + 5710 " System.out.println(methodName + i);\n" + 5711 " break;\n" + 5712 " case 1006 :\n" + 5713 " System.out.println(methodName + i);\n" + 5714 " break;\n" + 5715 " case 1007 :\n" + 5716 " System.out.println(methodName + i);\n" + 5717 " break;\n" + 5718 " case 1008 :\n" + 5719 " System.out.println(methodName + i);\n" + 5720 " break;\n" + 5721 " case 1009 :\n" + 5722 " System.out.println(methodName + i);\n" + 5723 " break;\n" + 5724 " case 1010 :\n" + 5725 " System.out.println(methodName + i);\n" + 5726 " break;\n" + 5727 " case 1011 :\n" + 5728 " System.out.println(methodName + i);\n" + 5729 " break;\n" + 5730 " case 1012 :\n" + 5731 " System.out.println(methodName + i);\n" + 5732 " break;\n" + 5733 " case 1013 :\n" + 5734 " System.out.println(methodName + i);\n" + 5735 " break;\n" + 5736 " case 1014 :\n" + 5737 " System.out.println(methodName + i);\n" + 5738 " break;\n" + 5739 " case 1015 :\n" + 5740 " System.out.println(methodName + i);\n" + 5741 " break;\n" + 5742 " case 1016 :\n" + 5743 " System.out.println(methodName + i);\n" + 5744 " break;\n" + 5745 " case 1017 :\n" + 5746 " System.out.println(methodName + i);\n" + 5747 " break;\n" + 5748 " case 1018 :\n" + 5749 " System.out.println(methodName + i);\n" + 5750 " break;\n" + 5751 " case 1019 :\n" + 5752 " System.out.println(methodName + i);\n" + 5753 " break;\n" + 5754 " case 1020 :\n" + 5755 " System.out.println(methodName + i);\n" + 5756 " break;\n" + 5757 " case 1021 :\n" + 5758 " System.out.println(methodName + i);\n" + 5759 " break;\n" + 5760 " case 1022 :\n" + 5761 " System.out.println(methodName + i);\n" + 5762 " break;\n" + 5763 " case 1023 :\n" + 5764 " System.out.println(methodName + i);\n" + 5765 " break;\n" + 5766 " case 1024 :\n" + 5767 " System.out.println(methodName + i);\n" + 5768 " break;\n" + 5769 " case 1025 :\n" + 5770 " System.out.println(methodName + i);\n" + 5771 " break;\n" + 5772 " case 1026 :\n" + 5773 " System.out.println(methodName + i);\n" + 5774 " break;\n" + 5775 " case 1027 :\n" + 5776 " System.out.println(methodName + i);\n" + 5777 " break;\n" + 5778 " case 1028 :\n" + 5779 " System.out.println(methodName + i);\n" + 5780 " break;\n" + 5781 " case 1029 :\n" + 5782 " System.out.println(methodName + i);\n" + 5783 " break;\n" + 5784 " case 1030 :\n" + 5785 " System.out.println(methodName + i);\n" + 5786 " break;\n" + 5787 " case 1031 :\n" + 5788 " System.out.println(methodName + i);\n" + 5789 " break;\n" + 5790 " case 1032 :\n" + 5791 " System.out.println(methodName + i);\n" + 5792 " break;\n" + 5793 " case 1033 :\n" + 5794 " System.out.println(methodName + i);\n" + 5795 " break;\n" + 5796 " case 1034 :\n" + 5797 " System.out.println(methodName + i);\n" + 5798 " break;\n" + 5799 " case 1035 :\n" + 5800 " System.out.println(methodName + i);\n" + 5801 " break;\n" + 5802 " case 1036 :\n" + 5803 " System.out.println(methodName + i);\n" + 5804 " break;\n" + 5805 " case 1037 :\n" + 5806 " System.out.println(methodName + i);\n" + 5807 " break;\n" + 5808 " case 1038 :\n" + 5809 " System.out.println(methodName + i);\n" + 5810 " break;\n" + 5811 " case 1039 :\n" + 5812 " System.out.println(methodName + i);\n" + 5813 " break;\n" + 5814 " case 1040 :\n" + 5815 " System.out.println(methodName + i);\n" + 5816 " break;\n" + 5817 " case 1041 :\n" + 5818 " System.out.println(methodName + i);\n" + 5819 " break;\n" + 5820 " case 1042 :\n" + 5821 " System.out.println(methodName + i);\n" + 5822 " break;\n" + 5823 " case 1043 :\n" + 5824 " System.out.println(methodName + i);\n" + 5825 " break;\n" + 5826 " case 1044 :\n" + 5827 " System.out.println(methodName + i);\n" + 5828 " break;\n" + 5829 " case 1045 :\n" + 5830 " System.out.println(methodName + i);\n" + 5831 " break;\n" + 5832 " case 1046 :\n" + 5833 " System.out.println(methodName + i);\n" + 5834 " break;\n" + 5835 " case 1047 :\n" + 5836 " System.out.println(methodName + i);\n" + 5837 " break;\n" + 5838 " case 1048 :\n" + 5839 " System.out.println(methodName + i);\n" + 5840 " break;\n" + 5841 " case 1049 :\n" + 5842 " System.out.println(methodName + i);\n" + 5843 " break;\n" + 5844 " case 1050 :\n" + 5845 " System.out.println(methodName + i);\n" + 5846 " break;\n" + 5847 " case 1051 :\n" + 5848 " System.out.println(methodName + i);\n" + 5849 " break;\n" + 5850 " case 1052 :\n" + 5851 " System.out.println(methodName + i);\n" + 5852 " break;\n" + 5853 " case 1053 :\n" + 5854 " System.out.println(methodName + i);\n" + 5855 " break;\n" + 5856 " case 1054 :\n" + 5857 " System.out.println(methodName + i);\n" + 5858 " break;\n" + 5859 " case 1055 :\n" + 5860 " System.out.println(methodName + i);\n" + 5861 " break;\n" + 5862 " case 1056 :\n" + 5863 " System.out.println(methodName + i);\n" + 5864 " break;\n" + 5865 " case 1057 :\n" + 5866 " System.out.println(methodName + i);\n" + 5867 " break;\n" + 5868 " case 1058 :\n" + 5869 " System.out.println(methodName + i);\n" + 5870 " break;\n" + 5871 " case 1059 :\n" + 5872 " System.out.println(methodName + i);\n" + 5873 " break;\n" + 5874 " case 1060 :\n" + 5875 " System.out.println(methodName + i);\n" + 5876 " break;\n" + 5877 " case 1061 :\n" + 5878 " System.out.println(methodName + i);\n" + 5879 " break;\n" + 5880 " case 1062 :\n" + 5881 " System.out.println(methodName + i);\n" + 5882 " break;\n" + 5883 " case 1063 :\n" + 5884 " System.out.println(methodName + i);\n" + 5885 " break;\n" + 5886 " case 1064 :\n" + 5887 " System.out.println(methodName + i);\n" + 5888 " break;\n" + 5889 " case 1065 :\n" + 5890 " System.out.println(methodName + i);\n" + 5891 " break;\n" + 5892 " case 1066 :\n" + 5893 " System.out.println(methodName + i);\n" + 5894 " break;\n" + 5895 " case 1067 :\n" + 5896 " System.out.println(methodName + i);\n" + 5897 " break;\n" + 5898 " case 1068 :\n" + 5899 " System.out.println(methodName + i);\n" + 5900 " break;\n" + 5901 " case 1069 :\n" + 5902 " System.out.println(methodName + i);\n" + 5903 " break;\n" + 5904 " case 1070 :\n" + 5905 " System.out.println(methodName + i);\n" + 5906 " break;\n" + 5907 " case 1071 :\n" + 5908 " System.out.println(methodName + i);\n" + 5909 " break;\n" + 5910 " case 1072 :\n" + 5911 " System.out.println(methodName + i);\n" + 5912 " break;\n" + 5913 " case 1073 :\n" + 5914 " System.out.println(methodName + i);\n" + 5915 " break;\n" + 5916 " case 1074 :\n" + 5917 " System.out.println(methodName + i);\n" + 5918 " break;\n" + 5919 " case 1075 :\n" + 5920 " System.out.println(methodName + i);\n" + 5921 " break;\n" + 5922 " case 1076 :\n" + 5923 " System.out.println(methodName + i);\n" + 5924 " break;\n" + 5925 " case 1077 :\n" + 5926 " System.out.println(methodName + i);\n" + 5927 " break;\n" + 5928 " case 1078 :\n" + 5929 " System.out.println(methodName + i);\n" + 5930 " break;\n" + 5931 " case 1079 :\n" + 5932 " System.out.println(methodName + i);\n" + 5933 " break;\n" + 5934 " case 1080 :\n" + 5935 " System.out.println(methodName + i);\n" + 5936 " break;\n" + 5937 " case 1081 :\n" + 5938 " System.out.println(methodName + i);\n" + 5939 " break;\n" + 5940 " case 1082 :\n" + 5941 " System.out.println(methodName + i);\n" + 5942 " break;\n" + 5943 " case 1083 :\n" + 5944 " System.out.println(methodName + i);\n" + 5945 " break;\n" + 5946 " case 1084 :\n" + 5947 " System.out.println(methodName + i);\n" + 5948 " break;\n" + 5949 " case 1085 :\n" + 5950 " System.out.println(methodName + i);\n" + 5951 " break;\n" + 5952 " case 1086 :\n" + 5953 " System.out.println(methodName + i);\n" + 5954 " break;\n" + 5955 " case 1087 :\n" + 5956 " System.out.println(methodName + i);\n" + 5957 " break;\n" + 5958 " case 1088 :\n" + 5959 " System.out.println(methodName + i);\n" + 5960 " break;\n" + 5961 " case 1089 :\n" + 5962 " System.out.println(methodName + i);\n" + 5963 " break;\n" + 5964 " case 1090 :\n" + 5965 " System.out.println(methodName + i);\n" + 5966 " break;\n" + 5967 " case 1091 :\n" + 5968 " System.out.println(methodName + i);\n" + 5969 " break;\n" + 5970 " case 1092 :\n" + 5971 " System.out.println(methodName + i);\n" + 5972 " break;\n" + 5973 " case 1093 :\n" + 5974 " System.out.println(methodName + i);\n" + 5975 " break;\n" + 5976 " case 1094 :\n" + 5977 " System.out.println(methodName + i);\n" + 5978 " break;\n" + 5979 " case 1095 :\n" + 5980 " System.out.println(methodName + i);\n" + 5981 " break;\n" + 5982 " case 1096 :\n" + 5983 " System.out.println(methodName + i);\n" + 5984 " break;\n" + 5985 " case 1097 :\n" + 5986 " System.out.println(methodName + i);\n" + 5987 " break;\n" + 5988 " case 1098 :\n" + 5989 " System.out.println(methodName + i);\n" + 5990 " break;\n" + 5991 " case 1099 :\n" + 5992 " System.out.println(methodName + i);\n" + 5993 " break;\n" + 5994 " case 1100 :\n" + 5995 " System.out.println(methodName + i);\n" + 5996 " break;\n" + 5997 " case 1101 :\n" + 5998 " System.out.println(methodName + i);\n" + 5999 " break;\n" + 6000 " case 1102 :\n" + 6001 " System.out.println(methodName + i);\n" + 6002 " break;\n" + 6003 " case 1103 :\n" + 6004 " System.out.println(methodName + i);\n" + 6005 " break;\n" + 6006 " case 1104 :\n" + 6007 " System.out.println(methodName + i);\n" + 6008 " break;\n" + 6009 " case 1105 :\n" + 6010 " System.out.println(methodName + i);\n" + 6011 " break;\n" + 6012 " case 1106 :\n" + 6013 " System.out.println(methodName + i);\n" + 6014 " break;\n" + 6015 " case 1107 :\n" + 6016 " System.out.println(methodName + i);\n" + 6017 " break;\n" + 6018 " case 1108 :\n" + 6019 " System.out.println(methodName + i);\n" + 6020 " break;\n" + 6021 " case 1109 :\n" + 6022 " System.out.println(methodName + i);\n" + 6023 " break;\n" + 6024 " case 1110 :\n" + 6025 " System.out.println(methodName + i);\n" + 6026 " break;\n" + 6027 " case 1111 :\n" + 6028 " System.out.println(methodName + i);\n" + 6029 " break;\n" + 6030 " case 1112 :\n" + 6031 " System.out.println(methodName + i);\n" + 6032 " break;\n" + 6033 " case 1113 :\n" + 6034 " System.out.println(methodName + i);\n" + 6035 " break;\n" + 6036 " case 1114 :\n" + 6037 " System.out.println(methodName + i);\n" + 6038 " break;\n" + 6039 " case 1115 :\n" + 6040 " System.out.println(methodName + i);\n" + 6041 " break;\n" + 6042 " case 1116 :\n" + 6043 " System.out.println(methodName + i);\n" + 6044 " break;\n" + 6045 " case 1117 :\n" + 6046 " System.out.println(methodName + i);\n" + 6047 " break;\n" + 6048 " case 1118 :\n" + 6049 " System.out.println(methodName + i);\n" + 6050 " break;\n" + 6051 " case 1119 :\n" + 6052 " System.out.println(methodName + i);\n" + 6053 " break;\n" + 6054 " case 1120 :\n" + 6055 " System.out.println(methodName + i);\n" + 6056 " break;\n" + 6057 " case 1121 :\n" + 6058 " System.out.println(methodName + i);\n" + 6059 " break;\n" + 6060 " case 1122 :\n" + 6061 " System.out.println(methodName + i);\n" + 6062 " break;\n" + 6063 " case 1123 :\n" + 6064 " System.out.println(methodName + i);\n" + 6065 " break;\n" + 6066 " case 1124 :\n" + 6067 " System.out.println(methodName + i);\n" + 6068 " break;\n" + 6069 " case 1125 :\n" + 6070 " System.out.println(methodName + i);\n" + 6071 " break;\n" + 6072 " case 1126 :\n" + 6073 " System.out.println(methodName + i);\n" + 6074 " break;\n" + 6075 " case 1127 :\n" + 6076 " System.out.println(methodName + i);\n" + 6077 " break;\n" + 6078 " case 1128 :\n" + 6079 " System.out.println(methodName + i);\n" + 6080 " break;\n" + 6081 " case 1129 :\n" + 6082 " System.out.println(methodName + i);\n" + 6083 " break;\n" + 6084 " }\n" + 6085 " } catch(Exception e) {\n" + 6086 " e.printStackTrace();\n" + 6087 " }\n" + 6088 " }" + 6089 "}", 6090 }, 6091 "SUCCESS"); 6092 } 6093 6094 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=238923 test038()6095 public void test038() { 6096 this.runConformTest( 6097 new String[] { 6098 "X.java", 6099 "public class X {\n" + 6100 " {\n" + 6101 " for (boolean b : new boolean[] {}) {}\n" + 6102 " }\n" + 6103 " public X() {}\n" + 6104 " public X(boolean b) {}\n" + 6105 " public static void main(String[] args) {\n" + 6106 " System.out.print(\"SUCCESS\");\n" + 6107 " }\n" + 6108 "}", 6109 }, 6110 "SUCCESS"); 6111 } 6112 6113 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=237931 test039()6114 public void test039() { 6115 this.runConformTest( 6116 new String[] { 6117 "X.java", 6118 "public class X {\n" + 6119 " public String[][] foo(String s) {\n" + 6120 " return\n" + 6121 " new String[][] { {\" \", s != null ? s : \"\" },\n" + 6122 " {\" \", s != null ? s : \"\" },\n" + 6123 " {\" \", s != null ? s : \"\" },\n" + 6124 " {\" \", s != null ? s : \"\" } };\n" + 6125 " }\n" + 6126 " public static void main(String[] args) {\n" + 6127 " System.out.println(\"SUCCESS\");\n" + 6128 " }\n" + 6129 "}", 6130 }, 6131 "SUCCESS"); 6132 } 6133 6134 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539 test040()6135 public void test040() throws Exception { 6136 this.runConformTest( 6137 new String[] { 6138 "I.java", 6139 "public interface I {\n" + 6140 "\n" + 6141 " public Object foo();\n" + 6142 "\n" + 6143 " public static class B implements I {\n" + 6144 " public Object foo() {\n" + 6145 " return X.myI.foo();\n" + 6146 " }\n" + 6147 " }\n" + 6148 "}", 6149 "X.java", 6150 "public class X {\n" + 6151 " public static final I myI = new I.B() {\n" + 6152 " int a = 0;\n" + 6153 " int b = 1;\n" + 6154 " };\n" + 6155 "\n" + 6156 " private Object bar2() {\n" + 6157 " return null;\n" + 6158 " }\n" + 6159 " private Object bar() {\n" + 6160 " Object o = bar2();\n" + 6161 " if (o != null) {\n" + 6162 " o.toString();\n" + 6163 " }\n" + 6164 " return null;\n" + 6165 " }\n" + 6166 "\n" + 6167 "}", 6168 }, 6169 ""); 6170 String expectedOutput = 6171 " // Method descriptor #23 ()Ljava/lang/Object;\n" + 6172 " // Stack: 1, Locals: 2\n" + 6173 " private java.lang.Object bar();\n" + 6174 " 0 aload_0 [this]\n" + 6175 " 1 " + 6176 (isMinimumCompliant(ClassFileConstants.JDK11) ? "invokevirtual" : "invokespecial") + 6177 " X.bar2() : java.lang.Object [25]\n" + 6178 " 4 astore_1 [o]\n" + 6179 " 5 aload_1 [o]\n" + 6180 " 6 ifnull 14\n" + 6181 " 9 aload_1 [o]\n" + 6182 " 10 invokevirtual java.lang.Object.toString() : java.lang.String [27]\n" + 6183 " 13 pop\n" + 6184 " 14 aconst_null\n" + 6185 " 15 areturn\n" + 6186 " Line numbers:\n" + 6187 " [pc: 0, line: 11]\n" + 6188 " [pc: 5, line: 12]\n" + 6189 " [pc: 9, line: 13]\n" + 6190 " [pc: 14, line: 15]\n" + 6191 " Local variable table:\n" + 6192 " [pc: 0, pc: 16] local: this index: 0 type: X\n" + 6193 " [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" + 6194 " Stack map table: number of frames 1\n" + 6195 " [pc: 14, append: {java.lang.Object}]\n"; 6196 checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); 6197 } 6198 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539 test041()6199 public void test041() throws Exception { 6200 this.runConformTest( 6201 new String[] { 6202 "I.java", 6203 "public interface I {\n" + 6204 "\n" + 6205 " public Object foo();\n" + 6206 "\n" + 6207 " public static class B implements I {\n" + 6208 " public Object foo() {\n" + 6209 " return String.valueOf(X.myI.foo()) + String.valueOf(X.myU.foo());\n" + 6210 " }\n" + 6211 " }\n" + 6212 "}", 6213 "X.java", 6214 "public class X {\n" + 6215 " public static final I myI = new I.B() {\n" + 6216 " int a = 0;\n" + 6217 " int b = 1;\n" + 6218 " };\n" + 6219 " public static final I myU = new I.B() {\n" + 6220 " int a = 0;\n" + 6221 " int b = 1;\n" + 6222 " int c = 2;\n" + 6223 " };\n" + 6224 " private Object bar2() {\n" + 6225 " return null;\n" + 6226 " }\n" + 6227 " private Object bar() {\n" + 6228 " Object o = bar2();\n" + 6229 " if (o != null) {\n" + 6230 " o.toString();\n" + 6231 " }\n" + 6232 " return null;\n" + 6233 " }\n" + 6234 "}", 6235 }, 6236 ""); 6237 6238 String expectedOutput = 6239 " // Method descriptor #29 ()Ljava/lang/Object;\n" + 6240 " // Stack: 1, Locals: 2\n" + 6241 " private java.lang.Object bar();\n" + 6242 " 0 aload_0 [this]\n" + 6243 " 1 " + 6244 (isMinimumCompliant(ClassFileConstants.JDK11) ? "invokevirtual" : "invokespecial") + 6245 " X.bar2() : java.lang.Object [31]\n" + 6246 " 4 astore_1 [o]\n" + 6247 " 5 aload_1 [o]\n" + 6248 " 6 ifnull 14\n" + 6249 " 9 aload_1 [o]\n" + 6250 " 10 invokevirtual java.lang.Object.toString() : java.lang.String [33]\n" + 6251 " 13 pop\n" + 6252 " 14 aconst_null\n" + 6253 " 15 areturn\n" + 6254 " Line numbers:\n" + 6255 " [pc: 0, line: 15]\n" + 6256 " [pc: 5, line: 16]\n" + 6257 " [pc: 9, line: 17]\n" + 6258 " [pc: 14, line: 19]\n" + 6259 " Local variable table:\n" + 6260 " [pc: 0, pc: 16] local: this index: 0 type: X\n" + 6261 " [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" + 6262 " Stack map table: number of frames 1\n" + 6263 " [pc: 14, append: {java.lang.Object}]\n"; 6264 checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); 6265 } 6266 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=260031 test042()6267 public void test042() throws Exception { 6268 this.runConformTest( 6269 new String[] { 6270 "X.java", 6271 "public class X {\n" + 6272 " private static void foo(Class<?> c, int n) { }\n" + 6273 " public static void main(String... args) {\n" + 6274 " foo(Integer.class, (args == null ? -1 : 1));\n" + 6275 " }\n" + 6276 "}", 6277 }, 6278 ""); 6279 6280 String expectedOutput = 6281 " // Stack: 2, Locals: 1\n" + 6282 " public static void main(java.lang.String... args);\n" + 6283 " 0 ldc <Class java.lang.Integer> [26]\n" + 6284 " 2 aload_0 [args]\n" + 6285 " 3 ifnonnull 10\n" + 6286 " 6 iconst_m1\n" + 6287 " 7 goto 11\n" + 6288 " 10 iconst_1\n" + 6289 " 11 invokestatic X.foo(java.lang.Class, int) : void [28]\n" + 6290 " 14 return\n" + 6291 " Line numbers:\n" + 6292 " [pc: 0, line: 4]\n" + 6293 " [pc: 14, line: 5]\n" + 6294 " Local variable table:\n" + 6295 " [pc: 0, pc: 15] local: args index: 0 type: java.lang.String[]\n" + 6296 " Stack map table: number of frames 2\n" + 6297 " [pc: 10, same_locals_1_stack_item, stack: {java.lang.Class}]\n" + 6298 " [pc: 11, full, stack: {java.lang.Class, int}, locals: {java.lang.String[]}]\n"; 6299 checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); 6300 } 6301 6302 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183 test043()6303 public void test043() throws Exception { 6304 this.runConformTest( 6305 new String[] { 6306 "X.java", 6307 "public class X {\n" + 6308 " public static void main(String[] args) {\n" + 6309 " System.out.println(\"ok\");\n" + 6310 " }\n" + 6311 " private static int willNotVerify() {\n" + 6312 " int limit = 100;\n" + 6313 " int match;\n" + 6314 " int result = 200;\n" + 6315 " do {\n" + 6316 " if (limit > 0) {\n" + 6317 " continue;\n" + 6318 " }\n" + 6319 " match = 0;\n" + 6320 " while (++match < 100) {\n" + 6321 " System.out.println();\n" + 6322 " }\n" + 6323 " } while (--limit != 0);\n" + 6324 " return result;\n" + 6325 " }\n" + 6326 "}", 6327 }, 6328 "ok"); 6329 6330 String expectedOutput = 6331 " // Method descriptor #33 ()I\n" + 6332 " // Stack: 2, Locals: 3\n" + 6333 " private static int willNotVerify();\n" + 6334 " 0 bipush 100\n" + 6335 " 2 istore_0 [limit]\n" + 6336 " 3 sipush 200\n" + 6337 " 6 istore_2 [result]\n" + 6338 " 7 iload_0 [limit]\n" + 6339 " 8 ifle 14\n" + 6340 " 11 goto 34\n" + 6341 " 14 iconst_0\n" + 6342 " 15 istore_1 [match]\n" + 6343 " 16 goto 25\n" + 6344 " 19 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 6345 " 22 invokevirtual java.io.PrintStream.println() : void [34]\n" + 6346 " 25 iinc 1 1 [match]\n" + 6347 " 28 iload_1 [match]\n" + 6348 " 29 bipush 100\n" + 6349 " 31 if_icmplt 19\n" + 6350 " 34 iinc 0 -1 [limit]\n" + 6351 " 37 iload_0 [limit]\n" + 6352 " 38 ifne 7\n" + 6353 " 41 iload_2 [result]\n" + 6354 " 42 ireturn\n" + 6355 " Line numbers:\n" + 6356 " [pc: 0, line: 6]\n" + 6357 " [pc: 3, line: 8]\n" + 6358 " [pc: 7, line: 10]\n" + 6359 " [pc: 11, line: 11]\n" + 6360 " [pc: 14, line: 13]\n" + 6361 " [pc: 16, line: 14]\n" + 6362 " [pc: 19, line: 15]\n" + 6363 " [pc: 25, line: 14]\n" + 6364 " [pc: 34, line: 17]\n" + 6365 " [pc: 41, line: 18]\n" + 6366 " Local variable table:\n" + 6367 " [pc: 3, pc: 43] local: limit index: 0 type: int\n" + 6368 " [pc: 16, pc: 34] local: match index: 1 type: int\n" + 6369 " [pc: 7, pc: 43] local: result index: 2 type: int\n" + 6370 " Stack map table: number of frames 5\n" + 6371 " [pc: 7, full, stack: {}, locals: {int, _, int}]\n" + 6372 " [pc: 14, same]\n" + 6373 " [pc: 19, full, stack: {}, locals: {int, int, int}]\n" + 6374 " [pc: 25, same]\n" + 6375 " [pc: 34, full, stack: {}, locals: {int, _, int}]\n"; 6376 checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); 6377 } 6378 6379 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183 test044()6380 public void test044() throws Exception { 6381 this.runConformTest( 6382 new String[] { 6383 "X.java", 6384 "public class X {\n" + 6385 " public static void main(String[] args) {\n" + 6386 " System.out.println(\"ok\");\n" + 6387 " }\n" + 6388 " private static int willNotVerify() {\n" + 6389 " int limit = 100;\n" + 6390 " int match;\n" + 6391 " int result = 200;\n" + 6392 " do {\n" + 6393 " if (limit > 0) {\n" + 6394 " continue;\n" + 6395 " }\n" + 6396 " match = 0;\n" + 6397 " while (++match < 100) {\n" + 6398 " // empty\n" + 6399 " }\n" + 6400 " } while (--limit != 0);\n" + 6401 " return result;\n" + 6402 " }\n" + 6403 "}", 6404 }, 6405 "ok"); 6406 6407 String expectedOutput = 6408 " // Method descriptor #33 ()I\n" + 6409 " // Stack: 2, Locals: 3\n" + 6410 " private static int willNotVerify();\n" + 6411 " 0 bipush 100\n" + 6412 " 2 istore_0 [limit]\n" + 6413 " 3 sipush 200\n" + 6414 " 6 istore_2 [result]\n" + 6415 " 7 iload_0 [limit]\n" + 6416 " 8 ifle 14\n" + 6417 " 11 goto 25\n" + 6418 " 14 iconst_0\n" + 6419 " 15 istore_1 [match]\n" + 6420 " 16 iinc 1 1 [match]\n" + 6421 " 19 iload_1 [match]\n" + 6422 " 20 bipush 100\n" + 6423 " 22 if_icmplt 16\n" + 6424 " 25 iinc 0 -1 [limit]\n" + 6425 " 28 iload_0 [limit]\n" + 6426 " 29 ifne 7\n" + 6427 " 32 iload_2 [result]\n" + 6428 " 33 ireturn\n" + 6429 " Line numbers:\n" + 6430 " [pc: 0, line: 6]\n" + 6431 " [pc: 3, line: 8]\n" + 6432 " [pc: 7, line: 10]\n" + 6433 " [pc: 11, line: 11]\n" + 6434 " [pc: 14, line: 13]\n" + 6435 " [pc: 16, line: 14]\n" + 6436 " [pc: 25, line: 17]\n" + 6437 " [pc: 32, line: 18]\n" + 6438 " Local variable table:\n" + 6439 " [pc: 3, pc: 34] local: limit index: 0 type: int\n" + 6440 " [pc: 16, pc: 25] local: match index: 1 type: int\n" + 6441 " [pc: 7, pc: 34] local: result index: 2 type: int\n" + 6442 " Stack map table: number of frames 4\n" + 6443 " [pc: 7, full, stack: {}, locals: {int, _, int}]\n" + 6444 " [pc: 14, same]\n" + 6445 " [pc: 16, full, stack: {}, locals: {int, int, int}]\n" + 6446 " [pc: 25, full, stack: {}, locals: {int, _, int}]\n"; 6447 checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); 6448 } 6449 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183 test045()6450 public void test045() throws Exception { 6451 this.runConformTest( 6452 new String[] { 6453 "X.java", 6454 "public class X {\n" + 6455 " public static void main(String args[]) {\n" + 6456 " int i;\n" + 6457 " do {\n" + 6458 " } while ((i = 2) < 0);\n" + 6459 " if (i != 2) {\n" + 6460 " System.out.println(\"FAILED\");\n" + 6461 " } else {\n" + 6462 " System.out.println(\"SUCCESS\");\n" + 6463 " }\n" + 6464 " }\n" + 6465 "}", 6466 }, 6467 "SUCCESS"); 6468 6469 String expectedOutput = 6470 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 6471 " // Stack: 2, Locals: 2\n" + 6472 " public static void main(java.lang.String[] args);\n" + 6473 " 0 iconst_2\n" + 6474 " 1 dup\n" + 6475 " 2 istore_1 [i]\n" + 6476 " 3 iflt 0\n" + 6477 " 6 iload_1 [i]\n" + 6478 " 7 iconst_2\n" + 6479 " 8 if_icmpeq 22\n" + 6480 " 11 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 6481 " 14 ldc <String \"FAILED\"> [22]\n" + 6482 " 16 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 6483 " 19 goto 30\n" + 6484 " 22 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 6485 " 25 ldc <String \"SUCCESS\"> [30]\n" + 6486 " 27 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 6487 " 30 return\n" + 6488 " Line numbers:\n" + 6489 " [pc: 0, line: 5]\n" + 6490 " [pc: 3, line: 4]\n" + 6491 " [pc: 6, line: 6]\n" + 6492 " [pc: 11, line: 7]\n" + 6493 " [pc: 19, line: 8]\n" + 6494 " [pc: 22, line: 9]\n" + 6495 " [pc: 30, line: 11]\n" + 6496 " Local variable table:\n" + 6497 " [pc: 0, pc: 31] local: args index: 0 type: java.lang.String[]\n" + 6498 " [pc: 3, pc: 31] local: i index: 1 type: int\n" + 6499 " Stack map table: number of frames 3\n" + 6500 " [pc: 0, same]\n" + 6501 " [pc: 22, append: {int}]\n" + 6502 " [pc: 30, same]\n"; 6503 checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput); 6504 } 6505 // 298250 test046()6506 public void test046() { 6507 Map customOptions = getCompilerOptions(); 6508 customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE); 6509 this.runNegativeTest( 6510 new String[] { 6511 "X.java", 6512 "public class X {\n" + 6513 " class E1 extends RuntimeException {\n" + 6514 " private static final long serialVersionUID = 1L;\n" + 6515 " }\n" + 6516 " static Object bar() {\n" + 6517 " return new Object() {\n" + 6518 " public void foo() {\n" + 6519 " if (condition())\n" + 6520 " throw new E1();\n" + 6521 " }\n" + 6522 " };\n" + 6523 " }\n" + 6524 " static boolean condition() {\n" + 6525 " return false;\n" + 6526 " }\n" + 6527 " public static void main(String[] args) {\n" + 6528 " }\n" + 6529 "}\n" + 6530 "", 6531 }, 6532 "----------\n" + 6533 "1. ERROR in X.java (at line 9)\n" + 6534 " throw new E1();\n" + 6535 " ^^^^^^^^\n" + 6536 "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" + 6537 "----------\n", 6538 null, 6539 true, 6540 customOptions); 6541 } 6542 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=324848 test047()6543 public void test047() { 6544 this.runNegativeTest( 6545 new String[] { 6546 "X.java", 6547 "public class X {\n" + 6548 " public static void test() {\n" + 6549 " final boolean x = true;\n" + 6550 " new Runnable() {\n" + 6551 " @Override\n" + 6552 " public void run() {\n" + 6553 " synchronized (X.this) {\n" + 6554 " System.out.println(x);\n" + 6555 " }\n" + 6556 " }\n" + 6557 " };\n" + 6558 " }\n" + 6559 "}" 6560 }, 6561 "----------\n" + 6562 "1. ERROR in X.java (at line 7)\n" + 6563 " synchronized (X.this) {\n" + 6564 " ^^^^^^\n" + 6565 "No enclosing instance of the type X is accessible in scope\n" + 6566 "----------\n"); 6567 } 6568 6569 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653 test048()6570 public void test048() { 6571 this.runConformTest( 6572 new String[] { 6573 "X.java", 6574 "public class X {\n" + 6575 " public static void main(String[] p) {\n" + 6576 " int i;\n" + 6577 " try {\n" + 6578 " if (p == null || p == null)\n" + 6579 " return;\n" + 6580 " i = 0;\n" + 6581 " } finally {\n" + 6582 " i = 0;\n" + 6583 " }\n" + 6584 " }\n" + 6585 "}\n" 6586 }, 6587 ""); 6588 } 6589 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653 test049()6590 public void test049() { 6591 this.runConformTest( 6592 new String[] { 6593 "X.java", 6594 "import java.io.IOException;\n" + 6595 "import java.io.InputStream;\n" + 6596 "\n" + 6597 "public class X implements Runnable {\n" + 6598 "\n" + 6599 " private boolean contentEquals(final String src, final String tar)\n" + 6600 " throws IOException {\n" + 6601 " if (src == null && tar == null) {\n" + 6602 " return true;\n" + 6603 " }\n" + 6604 " if (!isFile(src) || !isFile(tar))\n" + 6605 " throw new IOException(\"cannot compare non-files\");\n" + 6606 " if (size(src) != size(tar))\n" + 6607 " return false;\n" + 6608 " final byte[] baSrc = new byte[8192];\n" + 6609 " final byte[] baTar = new byte[baSrc.length];\n" + 6610 " int lrSrc;\n" + 6611 " int lrTar;\n" + 6612 " InputStream isSrc = null;\n" + 6613 " InputStream isTar = null;\n" + 6614 " try {\n" + 6615 " isSrc = newInputStream(src);\n" + 6616 " if (isSrc == null)\n" + 6617 " return false;\n" + 6618 " isTar = newInputStream(tar);\n" + 6619 " if (isTar == null)\n" + 6620 " return false;\n" + 6621 " do {\n" + 6622 " lrSrc = isSrc.read(baSrc);\n" + 6623 " lrTar = isTar.read(baTar);\n" + 6624 " if (lrSrc != lrTar)\n" + 6625 " return false;\n" + 6626 " for (int i = 0; i < lrSrc; i++)\n" + 6627 " if (baSrc[i] != baTar[i])\n" + 6628 " return false;\n" + 6629 " } while ((lrSrc >= 0) && (lrSrc == lrTar));\n" + 6630 " } finally {\n" + 6631 " try {\n" + 6632 " close(isSrc);\n" + 6633 " } finally {\n" + 6634 " close(isTar);\n" + 6635 " }\n" + 6636 " }\n" + 6637 " return true;\n" + 6638 " }\n" + 6639 " private void close(final InputStream isSrc) {\n" + 6640 " }\n" + 6641 " private boolean isFile(final String src) {\n" + 6642 " return false;\n" + 6643 " }\n" + 6644 " public void run() {\n" + 6645 " try {\n" + 6646 " System.out.println(contentEquals(null, null));\n" + 6647 " } catch (final IOException e) {\n" + 6648 " e.printStackTrace();\n" + 6649 " }\n" + 6650 " }\n" + 6651 " static InputStream newInputStream(String path) {\n" + 6652 " return null;\n" + 6653 " }\n" + 6654 " static int size(String path) {\n" + 6655 " return 0;\n" + 6656 " }\n" + 6657 " public static void main(final String[] args) {\n" + 6658 " new X().run();\n" + 6659 " }\n" + 6660 "}" 6661 }, 6662 "true"); 6663 } 6664 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145 test050()6665 public void test050() { 6666 this.runConformTest( 6667 new String[] { 6668 "X.java", 6669 "import java.io.File;\n" + 6670 "import java.io.FileFilter;\n" + 6671 "import java.io.FileNotFoundException;\n" + 6672 "import java.io.IOException;\n" + 6673 "import java.util.ArrayList;\n" + 6674 "import java.util.List;\n" + 6675 "\n" + 6676 "public class X {\n" + 6677 "\n" + 6678 " public static final List<File> copyDir(List<File> lf,\n" + 6679 " final boolean overwrite, final boolean recursive,\n" + 6680 " final boolean returnSrc, final File src, final File tar,\n" + 6681 " final FileFilter filter) throws IOException {\n" + 6682 " if (!src.isDirectory())\n" + 6683 " throw new FileNotFoundException(\"not a directory: \" + src);\n" + 6684 " if (!tar.isDirectory())\n" + 6685 " throw new FileNotFoundException(\"not a directory: \" + tar);\n" + 6686 " final File[] fa = src.listFiles();\n" + 6687 " if (fa == null)\n" + 6688 " throw new FileNotFoundException(\"directory not accessible: \" + src);\n" + 6689 " if (lf == null)\n" + 6690 " lf = new ArrayList<File>(fa.length);\n" + 6691 " for (final File f : fa) {\n" + 6692 " final File right = new File(tar, f.getName());\n" + 6693 " if (f.isDirectory()) {\n" + 6694 " if (recursive && filter.accept(f)) {\n" + 6695 " if (!right.exists())\n" + 6696 " right.mkdir();\n" + 6697 " copyDir(lf, overwrite, recursive, returnSrc, f, right,\n" + 6698 " filter);\n" + 6699 " }\n" + 6700 " } else {\n" + 6701 " if (overwrite || (!right.exists() && filter.accept(f))) {\n" + 6702 " lf.add(returnSrc ? f : right);\n" + 6703 " }\n" + 6704 " }\n" + 6705 " }\n" + 6706 " return lf;\n" + 6707 " }\n" + 6708 "\n" + 6709 " public static void main(final String[] args) {\n" + 6710 " System.out.println(\"SUCCESS\");\n" + 6711 " }\n" + 6712 "\n" + 6713 "}" 6714 }, 6715 "SUCCESS"); 6716 } 6717 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145 test051()6718 public void test051() { 6719 this.runConformTest( 6720 new String[] { 6721 "X.java", 6722 "import java.io.File;\n" + 6723 "import java.io.IOException;\n" + 6724 "import java.util.List;\n" + 6725 "\n" + 6726 "public class X {\n" + 6727 "\n" + 6728 " public static final List<File> copyDir(int j, List<File> lf,\n" + 6729 " final boolean returnSrc, final File[] fa) throws IOException {\n" + 6730 " if (lf == null)\n" + 6731 " lf = null;\n" + 6732 " for (int i = 0, max = fa.length; i < max; i++) {\n" + 6733 " final File f = fa[i];\n" + 6734 " final File right = new File(f.getName());\n" + 6735 " if (f.isDirectory()) {\n" + 6736 " } else {\n" + 6737 " lf.add(returnSrc ? f : right);\n" + 6738 " }\n" + 6739 " }\n" + 6740 " return lf;\n" + 6741 " }\n" + 6742 "\n" + 6743 " public static void main(final String[] args) {\n" + 6744 " System.out.println(\"SUCCESS\");\n" + 6745 " }\n" + 6746 "\n" + 6747 "}" 6748 }, 6749 "SUCCESS"); 6750 } test052()6751 public void test052() throws Exception { 6752 this.runConformTest( 6753 new String[] { 6754 "X.java", 6755 "public class X {\n" + 6756 " X(int i) {}\n" + 6757 " void foo() {}\n" + 6758 " public static void main(String[] args) {\n" + 6759 " new X(args.length == 2 ? 1 : 2).foo();\n" + 6760 " System.out.println(\"SUCCESS\");\n" + 6761 " }\n" + 6762 "}", 6763 }, 6764 "SUCCESS"); 6765 } 6766 // 352665 test053()6767 public void test053() { 6768 Map customOptions = getCompilerOptions(); 6769 customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE); 6770 customOptions.put(JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, JavaCore.IGNORE); 6771 this.runNegativeTest( 6772 new String[] { 6773 "X.java", 6774 "public class X {\n" + 6775 " static {\n" + 6776 " for(int i = 0; i < 10; i++){\n" + 6777 " A a = new A();\n" + 6778 " a.foo();\n" + 6779 " }\n" + 6780 " }\n" + 6781 " private class A {\n" + 6782 " private A() {\n" + 6783 " }\n" + 6784 " void foo() {}\n" + 6785 " }\n" + 6786 "}", 6787 }, 6788 "----------\n" + 6789 "1. ERROR in X.java (at line 4)\n" + 6790 " A a = new A();\n" + 6791 " ^^^^^^^\n" + 6792 "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" + 6793 "----------\n", 6794 null, 6795 true, 6796 customOptions); 6797 } 6798 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=354052 test054()6799 public void test054() throws Exception { 6800 this.runConformTest( 6801 new String[] { 6802 "X.java", 6803 "public class X {\n" + 6804 "public static void foo() {\n" + 6805 " X z;\n" + 6806 " while ((z = getObject()) != null) {\n" + 6807 " z.bar();\n" + 6808 " }\n" + 6809 " System.out.println(\"SUCCESS\");\n" + 6810 " }\n" + 6811 " public void bar() {}\n" + 6812 " public static X getObject() {\n" + 6813 " return null;\n" + 6814 " }\n" + 6815 " public static void main(String[] args) {\n"+ 6816 " new X().foo();\n"+ 6817 " }\n"+ 6818 "}", 6819 }, 6820 "SUCCESS"); 6821 } 6822 6823 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495 testBug359495a()6824 public void testBug359495a() throws Exception { 6825 this.runConformTest( 6826 new String[] { 6827 "X.java", 6828 "import java.util.List;\n" + 6829 "import java.util.concurrent.locks.Lock;\n" + 6830 "import java.util.Arrays;\n" + 6831 "import java.util.concurrent.locks.ReentrantLock;\n" + 6832 "public class X {\n" + 6833 " public static void main(String[] args) {\n" + 6834 " final Lock lock = new ReentrantLock();\n" + 6835 " final List<String> strings = Arrays.asList(args);\n" + 6836 " lock.lock();\n" + 6837 " try{\n" + 6838 " for (final String string:strings){\n" + 6839 " return;\n" + 6840 " }\n" + 6841 " return;\n" + 6842 " } finally {\n" + 6843 " lock.unlock();\n" + 6844 " }" + 6845 " }\n" + 6846 "}", 6847 }, 6848 ""); 6849 6850 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 6851 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 6852 String actualOutput = 6853 disassembler.disassemble( 6854 classFileBytes, 6855 "\n", 6856 ClassFileBytesDisassembler.DETAILED); 6857 6858 String expectedOutput = 6859 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 6860 " // Stack: 2, Locals: 6\n" + 6861 " public static void main(java.lang.String[] args);\n" + 6862 " 0 new java.util.concurrent.locks.ReentrantLock [16]\n" + 6863 " 3 dup\n" + 6864 " 4 invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" + 6865 " 7 astore_1 [lock]\n" + 6866 " 8 aload_0 [args]\n" + 6867 " 9 invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" + 6868 " 12 astore_2 [strings]\n" + 6869 " 13 aload_1 [lock]\n" + 6870 " 14 invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" + 6871 " 19 aload_2 [strings]\n" + 6872 " 20 invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" + 6873 " 25 astore 4\n" + 6874 " 27 aload 4\n" + 6875 " 29 invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" + 6876 " 34 ifeq 55\n" + 6877 " 37 aload 4\n" + 6878 " 39 invokeinterface java.util.Iterator.next() : java.lang.Object [42] [nargs: 1]\n" + 6879 " 44 checkcast java.lang.String [46]\n" + 6880 " 47 astore_3 [string]\n" + 6881 " 48 aload_1 [lock]\n" + 6882 " 49 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + 6883 " 54 return\n" + 6884 " 55 aload_1 [lock]\n" + 6885 " 56 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + 6886 " 61 return\n" + 6887 " 62 astore 5\n" + 6888 " 64 aload_1 [lock]\n" + 6889 " 65 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + 6890 " 70 aload 5\n" + 6891 " 72 athrow\n" + 6892 " Exception Table:\n" + 6893 " [pc: 19, pc: 48] -> 62 when : any\n" + 6894 " Line numbers:\n" + 6895 " [pc: 0, line: 7]\n" + 6896 " [pc: 8, line: 8]\n" + 6897 " [pc: 13, line: 9]\n" + 6898 " [pc: 19, line: 11]\n" + 6899 " [pc: 48, line: 16]\n" + 6900 " [pc: 54, line: 12]\n" + 6901 " [pc: 55, line: 16]\n" + 6902 " [pc: 61, line: 14]\n" + 6903 " [pc: 62, line: 15]\n" + 6904 " [pc: 64, line: 16]\n" + 6905 " [pc: 70, line: 17]\n" + 6906 " Local variable table:\n" + 6907 " [pc: 0, pc: 73] local: args index: 0 type: java.lang.String[]\n" + 6908 " [pc: 8, pc: 73] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" + 6909 " [pc: 13, pc: 73] local: strings index: 2 type: java.util.List\n" + 6910 " [pc: 48, pc: 55] local: string index: 3 type: java.lang.String\n" + 6911 " Local variable type table:\n" + 6912 " [pc: 13, pc: 73] local: strings index: 2 type: java.util.List<java.lang.String>\n" + 6913 " Stack map table: number of frames 2\n" + 6914 " [pc: 55, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" + 6915 " [pc: 62, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" ; 6916 6917 int index = actualOutput.indexOf(expectedOutput); 6918 if (index == -1 || expectedOutput.length() == 0) { 6919 System.out.println(Util.displayString(actualOutput, 2)); 6920 } 6921 if (index == -1) { 6922 assertEquals("Wrong contents", expectedOutput, actualOutput); 6923 } 6924 } 6925 6926 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495 testBug359495b()6927 public void testBug359495b() throws Exception { 6928 this.runConformTest( 6929 new String[] { 6930 "X.java", 6931 "import java.util.List;\n" + 6932 "import java.util.Iterator;\n" + 6933 "import java.util.concurrent.locks.Lock;\n" + 6934 "import java.util.Arrays;\n" + 6935 "import java.util.concurrent.locks.ReentrantLock;\n" + 6936 "public class X {\n" + 6937 " public static void main(String[] args) {\n" + 6938 " final Lock lock = new ReentrantLock();\n" + 6939 " final List<String> strings = Arrays.asList(args);\n" + 6940 " lock.lock();\n" + 6941 " try{\n" + 6942 " for (Iterator i = strings.iterator(); i.hasNext();){\n" + 6943 " return;\n" + 6944 " }\n" + 6945 " return;\n" + 6946 " } finally {\n" + 6947 " lock.unlock();\n" + 6948 " }" + 6949 " }\n" + 6950 "}", 6951 }, 6952 ""); 6953 6954 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 6955 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 6956 String actualOutput = 6957 disassembler.disassemble( 6958 classFileBytes, 6959 "\n", 6960 ClassFileBytesDisassembler.DETAILED); 6961 6962 String expectedOutput = 6963 " // Method descriptor #15 ([Ljava/lang/String;)V\n" + 6964 " // Stack: 2, Locals: 5\n" + 6965 " public static void main(java.lang.String[] args);\n" + 6966 " 0 new java.util.concurrent.locks.ReentrantLock [16]\n" + 6967 " 3 dup\n" + 6968 " 4 invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" + 6969 " 7 astore_1 [lock]\n" + 6970 " 8 aload_0 [args]\n" + 6971 " 9 invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" + 6972 " 12 astore_2 [strings]\n" + 6973 " 13 aload_1 [lock]\n" + 6974 " 14 invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" + 6975 " 19 aload_2 [strings]\n" + 6976 " 20 invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" + 6977 " 25 astore_3 [i]\n" + 6978 " 26 aload_3 [i]\n" + 6979 " 27 invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" + 6980 " 32 ifeq 42\n" + 6981 " 35 aload_1 [lock]\n" + 6982 " 36 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + 6983 " 41 return\n" + 6984 " 42 aload_1 [lock]\n" + 6985 " 43 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + 6986 " 48 return\n" + 6987 " 49 astore 4\n" + 6988 " 51 aload_1 [lock]\n" + 6989 " 52 invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + 6990 " 57 aload 4\n" + 6991 " 59 athrow\n" + 6992 " Exception Table:\n" + 6993 " [pc: 19, pc: 35] -> 49 when : any\n" + 6994 " Line numbers:\n" + 6995 " [pc: 0, line: 8]\n" + 6996 " [pc: 8, line: 9]\n" + 6997 " [pc: 13, line: 10]\n" + 6998 " [pc: 19, line: 12]\n" + 6999 " [pc: 35, line: 17]\n" + 7000 " [pc: 41, line: 13]\n" + 7001 " [pc: 42, line: 17]\n" + 7002 " [pc: 48, line: 15]\n" + 7003 " [pc: 49, line: 16]\n" + 7004 " [pc: 51, line: 17]\n" + 7005 " [pc: 57, line: 18]\n" + 7006 " Local variable table:\n" + 7007 " [pc: 0, pc: 60] local: args index: 0 type: java.lang.String[]\n" + 7008 " [pc: 8, pc: 60] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" + 7009 " [pc: 13, pc: 60] local: strings index: 2 type: java.util.List\n" + 7010 " [pc: 26, pc: 42] local: i index: 3 type: java.util.Iterator\n" + 7011 " Local variable type table:\n" + 7012 " [pc: 13, pc: 60] local: strings index: 2 type: java.util.List<java.lang.String>\n" + 7013 " Stack map table: number of frames 2\n" + 7014 " [pc: 42, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" + 7015 " [pc: 49, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n"; 7016 7017 int index = actualOutput.indexOf(expectedOutput); 7018 if (index == -1 || expectedOutput.length() == 0) { 7019 System.out.println(Util.displayString(actualOutput, 2)); 7020 } 7021 if (index == -1) { 7022 assertEquals("Wrong contents", expectedOutput, actualOutput); 7023 } 7024 } 7025 7026 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591 test055()7027 public void test055() throws Exception { 7028 this.runConformTest( 7029 new String[] { 7030 "X.java", 7031 "public class X {\n" + 7032 " public static void main(String[] args) {\n" + 7033 " testError(3, 4, \"d\");\n" + 7034 " }\n" + 7035 " public static void testError(Number n0, Number n1, String refValue) {\n" + 7036 " Number result = refValue.equals(\"ttt\") ? n0 : (n1 == null ? null : n1.intValue());\n" + 7037 " System.out.println(String.valueOf(result));\n" + 7038 " }\n" + 7039 "}", 7040 }, 7041 "4"); 7042 7043 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 7044 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 7045 String actualOutput = 7046 disassembler.disassemble( 7047 classFileBytes, 7048 "\n", 7049 ClassFileBytesDisassembler.DETAILED); 7050 7051 String expectedOutput = 7052 " // Method descriptor #27 (Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/String;)V\n" + 7053 " // Stack: 2, Locals: 4\n" + 7054 " public static void testError(java.lang.Number n0, java.lang.Number n1, java.lang.String refValue);\n" + 7055 " 0 aload_2 [refValue]\n" + 7056 " 1 ldc <String \"ttt\"> [30]\n" + 7057 " 3 invokevirtual java.lang.String.equals(java.lang.Object) : boolean [32]\n" + 7058 " 6 ifeq 13\n" + 7059 " 9 aload_0 [n0]\n" + 7060 " 10 goto 28\n" + 7061 " 13 aload_1 [n1]\n" + 7062 " 14 ifnonnull 21\n" + 7063 " 17 aconst_null\n" + 7064 " 18 goto 28\n" + 7065 " 21 aload_1 [n1]\n" + 7066 " 22 invokevirtual java.lang.Number.intValue() : int [38]\n" + 7067 " 25 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [16]\n" + 7068 " 28 astore_3 [result]\n" + 7069 " 29 getstatic java.lang.System.out : java.io.PrintStream [44]\n" + 7070 " 32 aload_3 [result]\n" + 7071 " 33 invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [50]\n" + 7072 " 36 invokevirtual java.io.PrintStream.println(java.lang.String) : void [53]\n" + 7073 " 39 return\n" + 7074 " Line numbers:\n" + 7075 " [pc: 0, line: 6]\n" + 7076 " [pc: 29, line: 7]\n" + 7077 " [pc: 39, line: 8]\n" + 7078 " Local variable table:\n" + 7079 " [pc: 0, pc: 40] local: n0 index: 0 type: java.lang.Number\n" + 7080 " [pc: 0, pc: 40] local: n1 index: 1 type: java.lang.Number\n" + 7081 " [pc: 0, pc: 40] local: refValue index: 2 type: java.lang.String\n" + 7082 " [pc: 29, pc: 40] local: result index: 3 type: java.lang.Number\n" + 7083 " Stack map table: number of frames 3\n" + 7084 " [pc: 13, same]\n" + 7085 " [pc: 21, same]\n" + 7086 " [pc: 28, same_locals_1_stack_item, stack: {java.lang.Number}]\n"; 7087 7088 int index = actualOutput.indexOf(expectedOutput); 7089 if (index == -1 || expectedOutput.length() == 0) { 7090 System.out.println(Util.displayString(actualOutput, 2)); 7091 } 7092 if (index == -1) { 7093 assertEquals("Wrong contents", expectedOutput, actualOutput); 7094 } 7095 } 7096 test055a()7097 public void test055a() throws Exception { 7098 this.runConformTest( 7099 new String[] { 7100 "X.java", 7101 "public class X {\n" + 7102 " public static void main(String[] args) {\n" + 7103 " Object o = args != null ? args : (args == null ? null : args.length);\n" + 7104 " }\n" + 7105 "}\n", 7106 }, 7107 ""); 7108 } 7109 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=366999 test056()7110 public void test056() throws Exception { 7111 if (this.complianceLevel < ClassFileConstants.JDK1_7) return; 7112 this.runConformTest( 7113 new String[] { 7114 "X.java", 7115 "import java.io.BufferedReader;\n" + 7116 "import java.io.Closeable;\n" + 7117 "import java.io.File;\n" + 7118 "import java.io.FileReader;\n" + 7119 "import java.io.IOException;\n" + 7120 "\n" + 7121 "public class X {\n" + 7122 "\n" + 7123 " static class C implements Closeable {\n" + 7124 " @Override\n" + 7125 " public void close() throws IOException {\n" + 7126 " //\n" + 7127 " }\n" + 7128 " }\n" + 7129 "\n" + 7130 " int run() throws IOException {\n" + 7131 " int lcnt = 0;\n" + 7132 " try (C c = new C();) {\n" + 7133 " try (final BufferedReader br = new BufferedReader(new FileReader(\n" + 7134 " new File(\"logging.properties\")))) {\n" + 7135 " String s = null;\n" + 7136 " while ((s = br.readLine()) != null)\n" + 7137 " lcnt++;\n" + 7138 " return lcnt;\n" + 7139 " }\n" + 7140 " } finally {\n" + 7141 " System.out.println(\"read \" + lcnt + \" lines\");\n" + 7142 " }\n" + 7143 " }\n" + 7144 "\n" + 7145 " public static void main(final String[] args) throws IOException {\n" + 7146 " System.out.println(\"SUCCESS\");\n" + 7147 " }\n" + 7148 "}", 7149 }, 7150 "SUCCESS"); 7151 } 7152 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test057()7153 public void test057() throws Exception { 7154 this.runConformTest( 7155 new String[] { 7156 "X.java", 7157 "public class X {\n" + 7158 " public void run() {\n" + 7159 " String s;\n" + 7160 " label1: do {\n" + 7161 " for (;;) {\n" + 7162 " s = \"\";\n" + 7163 " if (s == null) \n" + 7164 " continue label1;\n" + 7165 " }\n" + 7166 " } while (s != null);\n" + 7167 "}\n" + 7168 " public static void main(String [] args) {\n" + 7169 " System.out.println(\"SUCCESS\");\n" + 7170 " }\n" + 7171 "}\n", 7172 }, 7173 "SUCCESS"); 7174 } 7175 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test058()7176 public void test058() throws Exception { 7177 this.runConformTest( 7178 new String[] { 7179 "X.java", 7180 "public class X {\n" + 7181 " public void run() {\n" + 7182 " String s;\n" + 7183 " label1: do {\n" + 7184 " for (;true;) {\n" + 7185 " s = \"\";\n" + 7186 " if (s == null) \n" + 7187 " continue label1;\n" + 7188 " }\n" + 7189 " } while (s != null);\n" + 7190 "}\n" + 7191 " public static void main(String [] args) {\n" + 7192 " System.out.println(\"SUCCESS\");\n" + 7193 " }\n" + 7194 "}\n" }, 7195 "SUCCESS"); 7196 } 7197 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test059()7198 public void test059() throws Exception { 7199 this.runNegativeTest( 7200 new String[] { 7201 "X.java", 7202 "public class X {\n" + 7203 " public void run() {\n" + 7204 " String s;\n" + 7205 " label1: do {\n" + 7206 " for (;false;) {\n" + 7207 " s = \"\";\n" + 7208 " if (s == null) \n" + 7209 " continue label1;\n" + 7210 " }\n" + 7211 " } while (s != null);\n" + 7212 "}\n" + 7213 " public static void main(String [] args) {\n" + 7214 " System.out.println(\"SUCCESS\");\n" + 7215 " }\n" + 7216 "}\n" }, 7217 "----------\n" + 7218 "1. WARNING in X.java (at line 4)\n" + 7219 " label1: do {\n" + 7220 " ^^^^^^\n" + 7221 "The label label1 is never explicitly referenced\n" + 7222 "----------\n" + 7223 "2. ERROR in X.java (at line 5)\n" + 7224 " for (;false;) {\n" + 7225 " s = \"\";\n" + 7226 " if (s == null) \n" + 7227 " continue label1;\n" + 7228 " }\n" + 7229 " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 7230 "Unreachable code\n" + 7231 "----------\n" + 7232 "3. ERROR in X.java (at line 10)\n" + 7233 " } while (s != null);\n" + 7234 " ^\n" + 7235 "The local variable s may not have been initialized\n" + 7236 "----------\n"); 7237 } 7238 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test060()7239 public void test060() throws Exception { 7240 this.runConformTest( 7241 new String[] { 7242 "X.java", 7243 "public class X {\n" + 7244 " public void run() {\n" + 7245 " String s;\n" + 7246 " label1: do {\n" + 7247 " for (; 5 < 10;) {\n" + 7248 " s = \"\";\n" + 7249 " if (s == null) \n" + 7250 " continue label1;\n" + 7251 " }\n" + 7252 " } while (s != null);\n" + 7253 "}\n" + 7254 " public static void main(String [] args) {\n" + 7255 " System.out.println(\"SUCCESS\");\n" + 7256 " }\n" + 7257 "}\n" }, 7258 "SUCCESS"); 7259 } 7260 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test061()7261 public void test061() throws Exception { 7262 this.runNegativeTest( 7263 new String[] { 7264 "X.java", 7265 "public class X {\n" + 7266 " public void run() {\n" + 7267 " int five = 5, ten = 10;\n" + 7268 " String s;\n" + 7269 " label1: do {\n" + 7270 " for (; five < ten;) {\n" + 7271 " s = \"\";\n" + 7272 " if (s == null) \n" + 7273 " continue label1;\n" + 7274 " }\n" + 7275 " } while (s != null);\n" + 7276 "}\n" + 7277 " public static void main(String [] args) {\n" + 7278 " System.out.println(\"SUCCESS\");\n" + 7279 " }\n" + 7280 "}\n" }, 7281 "----------\n" + 7282 "1. WARNING in X.java (at line 9)\n" + 7283 " continue label1;\n" + 7284 " ^^^^^^^^^^^^^^^^\n" + 7285 "Dead code\n" + 7286 "----------\n" + 7287 "2. ERROR in X.java (at line 11)\n" + 7288 " } while (s != null);\n" + 7289 " ^\n" + 7290 "The local variable s may not have been initialized\n" + 7291 "----------\n"); 7292 } 7293 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test062()7294 public void test062() throws Exception { 7295 this.runConformTest( 7296 new String[] { 7297 "X.java", 7298 "public class X {\n" + 7299 " public void run() {\n" + 7300 " final int five = 5, ten = 10;\n" + 7301 " String s;\n" + 7302 " label1: do {\n" + 7303 " for (; five < ten;) {\n" + 7304 " s = \"\";\n" + 7305 " if (s == null) \n" + 7306 " continue label1;\n" + 7307 " }\n" + 7308 " } while (s != null);\n" + 7309 "}\n" + 7310 " public static void main(String [] args) {\n" + 7311 " System.out.println(\"SUCCESS\");\n" + 7312 " }\n" + 7313 "}\n" }, 7314 "SUCCESS"); 7315 } 7316 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test063()7317 public void test063() throws Exception { 7318 this.runNegativeTest( 7319 new String[] { 7320 "X.java", 7321 "public class X {\n" + 7322 " public void run() {\n" + 7323 " final int five = 5, ten = 10;\n" + 7324 " String s;\n" + 7325 " label1: do {\n" + 7326 " for (; five > ten;) {\n" + 7327 " s = \"\";\n" + 7328 " if (s == null) \n" + 7329 " continue label1;\n" + 7330 " }\n" + 7331 " } while (s != null);\n" + 7332 "}\n" + 7333 " public static void main(String [] args) {\n" + 7334 " System.out.println(\"SUCCESS\");\n" + 7335 " }\n" + 7336 "}\n" }, 7337 "----------\n" + 7338 "1. WARNING in X.java (at line 5)\n" + 7339 " label1: do {\n" + 7340 " ^^^^^^\n" + 7341 "The label label1 is never explicitly referenced\n" + 7342 "----------\n" + 7343 "2. ERROR in X.java (at line 6)\n" + 7344 " for (; five > ten;) {\n" + 7345 " s = \"\";\n" + 7346 " if (s == null) \n" + 7347 " continue label1;\n" + 7348 " }\n" + 7349 " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 7350 "Unreachable code\n" + 7351 "----------\n" + 7352 "3. ERROR in X.java (at line 11)\n" + 7353 " } while (s != null);\n" + 7354 " ^\n" + 7355 "The local variable s may not have been initialized\n" + 7356 "----------\n"); 7357 } 7358 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test064()7359 public void test064() throws Exception { 7360 this.runConformTest( 7361 new String[] { 7362 "X.java", 7363 "public class X {\n" + 7364 " public void run() {\n" + 7365 " String s;\n" + 7366 " label1: do {\n" + 7367 " while (true) {\n" + 7368 " s = \"\";\n" + 7369 " if (s == null) \n" + 7370 " continue label1;\n" + 7371 " }\n" + 7372 " } while (s != null);\n" + 7373 "}\n" + 7374 " public static void main(String [] args) {\n" + 7375 " System.out.println(\"SUCCESS\");\n" + 7376 " }\n" + 7377 "}\n", 7378 }, 7379 "SUCCESS"); 7380 } 7381 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test065()7382 public void test065() throws Exception { 7383 this.runNegativeTest( 7384 new String[] { 7385 "X.java", 7386 "public class X {\n" + 7387 " public void run() {\n" + 7388 " String s;\n" + 7389 " label1: do {\n" + 7390 " while (false) {\n" + 7391 " s = \"\";\n" + 7392 " if (s == null) \n" + 7393 " continue label1;\n" + 7394 " }\n" + 7395 " } while (s != null);\n" + 7396 "}\n" + 7397 " public static void main(String [] args) {\n" + 7398 " System.out.println(\"SUCCESS\");\n" + 7399 " }\n" + 7400 "}\n" }, 7401 "----------\n" + 7402 "1. WARNING in X.java (at line 4)\n" + 7403 " label1: do {\n" + 7404 " ^^^^^^\n" + 7405 "The label label1 is never explicitly referenced\n" + 7406 "----------\n" + 7407 "2. ERROR in X.java (at line 5)\n" + 7408 " while (false) {\n" + 7409 " s = \"\";\n" + 7410 " if (s == null) \n" + 7411 " continue label1;\n" + 7412 " }\n" + 7413 " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 7414 "Unreachable code\n" + 7415 "----------\n" + 7416 "3. ERROR in X.java (at line 10)\n" + 7417 " } while (s != null);\n" + 7418 " ^\n" + 7419 "The local variable s may not have been initialized\n" + 7420 "----------\n"); 7421 } 7422 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test066()7423 public void test066() throws Exception { 7424 this.runConformTest( 7425 new String[] { 7426 "X.java", 7427 "public class X {\n" + 7428 " public void run() {\n" + 7429 " String s;\n" + 7430 " label1: do {\n" + 7431 " while(5 < 10) {\n" + 7432 " s = \"\";\n" + 7433 " if (s == null) \n" + 7434 " continue label1;\n" + 7435 " }\n" + 7436 " } while (s != null);\n" + 7437 "}\n" + 7438 " public static void main(String [] args) {\n" + 7439 " System.out.println(\"SUCCESS\");\n" + 7440 " }\n" + 7441 "}\n" }, 7442 "SUCCESS"); 7443 } 7444 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test067()7445 public void test067() throws Exception { 7446 this.runNegativeTest( 7447 new String[] { 7448 "X.java", 7449 "public class X {\n" + 7450 " public void run() {\n" + 7451 " int five = 5, ten = 10;\n" + 7452 " String s;\n" + 7453 " label1: do {\n" + 7454 " while (five < ten) {\n" + 7455 " s = \"\";\n" + 7456 " if (s == null) \n" + 7457 " continue label1;\n" + 7458 " }\n" + 7459 " } while (s != null);\n" + 7460 "}\n" + 7461 " public static void main(String [] args) {\n" + 7462 " System.out.println(\"SUCCESS\");\n" + 7463 " }\n" + 7464 "}\n" }, 7465 "----------\n" + 7466 "1. WARNING in X.java (at line 9)\n" + 7467 " continue label1;\n" + 7468 " ^^^^^^^^^^^^^^^^\n" + 7469 "Dead code\n" + 7470 "----------\n" + 7471 "2. ERROR in X.java (at line 11)\n" + 7472 " } while (s != null);\n" + 7473 " ^\n" + 7474 "The local variable s may not have been initialized\n" + 7475 "----------\n"); 7476 } 7477 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test068()7478 public void test068() throws Exception { 7479 this.runConformTest( 7480 new String[] { 7481 "X.java", 7482 "public class X {\n" + 7483 " public void run() {\n" + 7484 " final int five = 5, ten = 10;\n" + 7485 " String s;\n" + 7486 " label1: do {\n" + 7487 " while (five < ten) {\n" + 7488 " s = \"\";\n" + 7489 " if (s == null) \n" + 7490 " continue label1;\n" + 7491 " }\n" + 7492 " } while (s != null);\n" + 7493 "}\n" + 7494 " public static void main(String [] args) {\n" + 7495 " System.out.println(\"SUCCESS\");\n" + 7496 " }\n" + 7497 "}\n" }, 7498 "SUCCESS"); 7499 } 7500 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test069()7501 public void test069() throws Exception { 7502 this.runNegativeTest( 7503 new String[] { 7504 "X.java", 7505 "public class X {\n" + 7506 " public void run() {\n" + 7507 " final int five = 5, ten = 10;\n" + 7508 " String s;\n" + 7509 " label1: do {\n" + 7510 " while (five > ten) {\n" + 7511 " s = \"\";\n" + 7512 " if (s == null) \n" + 7513 " continue label1;\n" + 7514 " }\n" + 7515 " } while (s != null);\n" + 7516 "}\n" + 7517 " public static void main(String [] args) {\n" + 7518 " System.out.println(\"SUCCESS\");\n" + 7519 " }\n" + 7520 "}\n" }, 7521 "----------\n" + 7522 "1. WARNING in X.java (at line 5)\n" + 7523 " label1: do {\n" + 7524 " ^^^^^^\n" + 7525 "The label label1 is never explicitly referenced\n" + 7526 "----------\n" + 7527 "2. ERROR in X.java (at line 6)\n" + 7528 " while (five > ten) {\n" + 7529 " s = \"\";\n" + 7530 " if (s == null) \n" + 7531 " continue label1;\n" + 7532 " }\n" + 7533 " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 7534 "Unreachable code\n" + 7535 "----------\n" + 7536 "3. ERROR in X.java (at line 11)\n" + 7537 " } while (s != null);\n" + 7538 " ^\n" + 7539 "The local variable s may not have been initialized\n" + 7540 "----------\n"); 7541 } 7542 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023 test070()7543 public void test070() throws Exception { 7544 this.runConformTest( 7545 new String[] { 7546 "X.java", 7547 "import java.util.ArrayList;\n" + 7548 "import java.util.Arrays;\n" + 7549 "import java.util.Iterator;\n" + 7550 "import java.util.List;\n" + 7551 "import java.util.Properties;\n" + 7552 "import org.w3c.dom.*;\n" + 7553 "public class X extends Object {\n" + 7554 " public static void main(String [] args) {\n" + 7555 " System.out.println (\"SUCCESS\");\n" + 7556 " }\n" + 7557 " private static class Handler extends Object {\n" + 7558 " public int getStuff() {\n" + 7559 " return 1;\n" + 7560 " }\n" + 7561 " public void handle(Element element) {\n" + 7562 " Properties properties = new Properties();\n" + 7563 " NamedNodeMap atts = element.getAttributes();\n" + 7564 " if (atts != null) {\n" + 7565 " for (int a = 0; a < atts.getLength(); a++) {\n" + 7566 " Node att = atts.item(a);\n" + 7567 " String name = att.getNodeName();\n" + 7568 " String value = att.getNodeValue();\n" + 7569 " if (\"foo\".equals(name)) {\n" + 7570 " name = value;\n" + 7571 " } else {\n" + 7572 " if (!\"bar\".equals(name))\n" + 7573 " continue;\n" + 7574 " name = value;\n" + 7575 " }\n" + 7576 " properties.put(name, value);\n" + 7577 " }\n" + 7578 " }\n" + 7579 " label0: do {\n" + 7580 " Node node;\n" + 7581 " String nodeName;\n" + 7582 " label1: do {\n" + 7583 " for (Iterator i = (new ArrayList(1)).iterator(); i\n" + 7584 " .hasNext(); members.add(equals(node))) {\n" + 7585 " node = (Node) i.next();\n" + 7586 " nodeName = \"\" + equals(node.getNodeName());\n" + 7587 " if (!\"foo\".equals(nodeName))\n" + 7588 " continue label1;\n" + 7589 " }\n" + 7590 " break label0;\n" + 7591 " } while (!\"bar\".equals(nodeName));\n" + 7592 " Iterator i = (new ArrayList(1)).iterator();\n" + 7593 " while (i.hasNext()) {\n" + 7594 " Node n = (Node) i.next();\n" + 7595 " String name = toString() + n.getNodeName();\n" + 7596 " if (\"wtf\".equals(name)) {\n" + 7597 " String propertyName = (toString() + n.getAttributes()\n" + 7598 " .getNamedItem(\"broken\")).trim();\n" + 7599 " String value = toString() + n;\n" + 7600 " properties.put(propertyName, value);\n" + 7601 " }\n" + 7602 " }\n" + 7603 " } while (true);\n" + 7604 " propertiesBuilder.equals(properties);\n" + 7605 " builder.equals(propertiesBuilder.hashCode());\n" + 7606 " builder.equals(members);\n" + 7607 " }\n" + 7608 " private final Object c;\n" + 7609 " private Object builder;\n" + 7610 " private List members;\n" + 7611 " private Object propertiesBuilder;\n" + 7612 " public Handler(Object c) {\n" + 7613 " this.c = c;\n" + 7614 " builder = Arrays.asList(Object.class);\n" + 7615 " builder.equals(\"foo\");\n" + 7616 " builder.equals(\"bar\");\n" + 7617 " members = new ArrayList();\n" + 7618 " propertiesBuilder = Arrays.asList(Object.class);\n" + 7619 " Object beanDefinition = propertiesBuilder.toString();\n" + 7620 " Object holder = new String(\"stirng\");\n" + 7621 " Arrays.asList(holder, c.toString());\n" + 7622 " }\n" + 7623 " }\n" + 7624 " public X() {\n" + 7625 " }\n" + 7626 " protected Object parseInternal(Element element, Object c) {\n" + 7627 " Handler h = new Handler(c);\n" + 7628 " h.handle(element);\n" + 7629 " return h.getStuff();\n" + 7630 " }\n" + 7631 "}\n" 7632 }, 7633 "SUCCESS"); 7634 } 7635 7636 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313 7637 // Verify the generated code does not have same branch target for the 2 return statements testBug380313()7638 public void testBug380313() throws Exception { 7639 this.runConformTest( 7640 new String[] { 7641 "X.java", 7642 "public class X {\n" + 7643 "public void foo() throws Exception {\n" + 7644 " int i = 1;\n" + 7645 " try {\n" + 7646 " if (i == 1) {\n" + 7647 " int n = bar();\n" + 7648 " if (n == 35)\n" + 7649 " return;\n" + 7650 " } else {\n" + 7651 " throw new Exception();\n" + 7652 " }\n" + 7653 " if (i == 0)\n" + 7654 " return;\n" + 7655 " } finally {\n" + 7656 " bar();\n" + 7657 " }\n" + 7658 " }\n" + 7659 "\n" + 7660 " private int bar() {\n" + 7661 " return 0;\n" + 7662 " }\n" + 7663 "\n" + 7664 " public static void main(String[] args) {\n" + 7665 " System.out.println(\"SUCCESS\");\n" + 7666 " }\n" + 7667 "}\n" 7668 }, 7669 "SUCCESS"); 7670 7671 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 7672 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 7673 String actualOutput = 7674 disassembler.disassemble( 7675 classFileBytes, 7676 "\n", 7677 ClassFileBytesDisassembler.DETAILED); 7678 7679 String xBarCall = isMinimumCompliant(ClassFileConstants.JDK11) ? 7680 "invokevirtual X.bar() : int [18]\n" : "invokespecial X.bar() : int [18]\n"; 7681 String expectedOutput = 7682 " // Method descriptor #6 ()V\n" + 7683 " // Stack: 2, Locals: 4\n" + 7684 " public void foo() throws java.lang.Exception;\n" + 7685 " 0 iconst_1\n" + 7686 " 1 istore_1 [i]\n" + 7687 " 2 iload_1 [i]\n" + 7688 " 3 iconst_1\n" + 7689 " 4 if_icmpne 24\n" + 7690 " 7 aload_0 [this]\n" + 7691 " 8 " + xBarCall + 7692 " 11 istore_2 [n]\n" + 7693 " 12 iload_2 [n]\n" + 7694 " 13 bipush 35\n" + 7695 " 15 if_icmpne 32\n" + 7696 " 18 aload_0 [this]\n" + 7697 " 19 " + xBarCall + 7698 " 22 pop\n" + 7699 " 23 return\n" + 7700 " 24 new java.lang.Exception [16]\n" + 7701 " 27 dup\n" + 7702 " 28 invokespecial java.lang.Exception() [22]\n" + 7703 " 31 athrow\n" + 7704 " 32 iload_1 [i]\n" + 7705 " 33 ifne 50\n" + 7706 " 36 aload_0 [this]\n" + 7707 " 37 " + xBarCall + 7708 " 40 pop\n" + 7709 " 41 return\n" + 7710 " 42 astore_3\n" + 7711 " 43 aload_0 [this]\n" + 7712 " 44 " + xBarCall + 7713 " 47 pop\n" + 7714 " 48 aload_3\n" + 7715 " 49 athrow\n" + 7716 " 50 aload_0 [this]\n" + 7717 " 51 " + xBarCall + 7718 " 54 pop\n" + 7719 " 55 return\n" + 7720 " Exception Table:\n" + 7721 " [pc: 2, pc: 18] -> 42 when : any\n" + 7722 " [pc: 24, pc: 36] -> 42 when : any\n" + 7723 " Line numbers:\n" + 7724 " [pc: 0, line: 3]\n" + 7725 " [pc: 2, line: 5]\n" + 7726 " [pc: 7, line: 6]\n" + 7727 " [pc: 12, line: 7]\n" + 7728 " [pc: 18, line: 15]\n" + 7729 " [pc: 23, line: 8]\n" + 7730 " [pc: 24, line: 10]\n" + 7731 " [pc: 32, line: 12]\n" + 7732 " [pc: 36, line: 15]\n" + 7733 " [pc: 41, line: 13]\n" + 7734 " [pc: 42, line: 14]\n" + 7735 " [pc: 43, line: 15]\n" + 7736 " [pc: 48, line: 16]\n" + 7737 " [pc: 50, line: 15]\n" + 7738 " [pc: 55, line: 17]\n" + 7739 " Local variable table:\n" + 7740 " [pc: 0, pc: 56] local: this index: 0 type: X\n" + 7741 " [pc: 2, pc: 56] local: i index: 1 type: int\n" + 7742 " [pc: 12, pc: 24] local: n index: 2 type: int\n" + 7743 " Stack map table: number of frames 4\n" + 7744 " [pc: 24, append: {int}]\n" + 7745 " [pc: 32, same]\n" + 7746 " [pc: 42, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 7747 " [pc: 50, same]\n"; 7748 int index = actualOutput.indexOf(expectedOutput); 7749 if (index == -1 || expectedOutput.length() == 0) { 7750 System.out.println(Util.displayString(actualOutput, 2)); 7751 } 7752 if (index == -1) { 7753 assertEquals("Wrong contents", expectedOutput, actualOutput); 7754 } 7755 } 7756 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313 7757 // Verify the generated code does not have same branch target for the 2 return statements testBug380313b()7758 public void testBug380313b() throws Exception { 7759 if (this.complianceLevel < ClassFileConstants.JDK1_7) 7760 return; 7761 this.runConformTest( 7762 new String[] { 7763 "X.java", 7764 "import java.io.FileInputStream;\n" + 7765 "import java.io.IOException;\n" + 7766 "public class X {\n" + 7767 "public void foo() throws Exception {\n" + 7768 " int i = 1;\n" + 7769 " try {\n" + 7770 " try (FileInputStream fis = new FileInputStream(\"\")) {\n" + 7771 " if (i == 2)" + 7772 " return;\n" + 7773 " }\n" + 7774 " if (i == 35) \n" + 7775 " return;\n" + 7776 " } catch(IOException e) {\n" + 7777 " bar();\n" + 7778 " } finally {\n" + 7779 " bar();\n" + 7780 " }\n" + 7781 " }\n" + 7782 "\n" + 7783 " private int bar() {\n" + 7784 " return 0;\n" + 7785 " }\n" + 7786 "\n" + 7787 " public static void main(String[] args) {\n" + 7788 " System.out.println(\"SUCCESS\");\n" + 7789 " }\n" + 7790 "}\n" 7791 }, 7792 "SUCCESS"); 7793 7794 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 7795 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 7796 String actualOutput = 7797 disassembler.disassemble( 7798 classFileBytes, 7799 "\n", 7800 ClassFileBytesDisassembler.DETAILED); 7801 7802 String xBarCall = (isMinimumCompliant(ClassFileConstants.JDK11) ? 7803 "invokevirtual" : "invokespecial") + " X.bar() : int [28]\n"; 7804 String expectedOutput = 7805 " // Method descriptor #6 ()V\n" + 7806 " // Stack: 3, Locals: 6\n" + 7807 " public void foo() throws java.lang.Exception;\n" + 7808 " 0 iconst_1\n" + 7809 " 1 istore_1 [i]\n" + 7810 " 2 aconst_null\n" + 7811 " 3 astore_2\n" + 7812 " 4 aconst_null\n" + 7813 " 5 astore_3\n" + 7814 " 6 new java.io.FileInputStream [18]\n" + 7815 " 9 dup\n" + 7816 " 10 ldc <String \"\"> [20]\n" + 7817 " 12 invokespecial java.io.FileInputStream(java.lang.String) [22]\n" + 7818 " 15 astore 4 [fis]\n" + 7819 " 17 iload_1 [i]\n" + 7820 " 18 iconst_2\n" + 7821 " 19 if_icmpne 38\n" + 7822 " 22 aload 4 [fis]\n" + 7823 " 24 ifnull 32\n" + 7824 " 27 aload 4 [fis]\n" + 7825 " 29 invokevirtual java.io.FileInputStream.close() : void [25]\n" + 7826 " 32 aload_0 [this]\n" + // return 1 7827 " 33 " + xBarCall + 7828 " 36 pop\n" + 7829 " 37 return\n" + 7830 " 38 aload 4 [fis]\n" + 7831 " 40 ifnull 86\n" + 7832 " 43 aload 4 [fis]\n" + 7833 " 45 invokevirtual java.io.FileInputStream.close() : void [25]\n" + 7834 " 48 goto 86\n" + 7835 " 51 astore_2\n" + 7836 " 52 aload 4 [fis]\n" + 7837 " 54 ifnull 62\n" + 7838 " 57 aload 4 [fis]\n" + 7839 " 59 invokevirtual java.io.FileInputStream.close() : void [25]\n" + 7840 " 62 aload_2\n" + 7841 " 63 athrow\n" + 7842 " 64 astore_3\n" + 7843 " 65 aload_2\n" + 7844 " 66 ifnonnull 74\n" + 7845 " 69 aload_3\n" + 7846 " 70 astore_2\n" + 7847 " 71 goto 84\n" + 7848 " 74 aload_2\n" + 7849 " 75 aload_3\n" + 7850 " 76 if_acmpeq 84\n" + 7851 " 79 aload_2\n" + 7852 " 80 aload_3\n" + 7853 " 81 invokevirtual java.lang.Throwable.addSuppressed(java.lang.Throwable) : void [32]\n" + 7854 " 84 aload_2\n" + 7855 " 85 athrow\n" + 7856 " 86 iload_1 [i]\n" + 7857 " 87 bipush 35\n" + 7858 " 89 if_icmpne 122\n" + 7859 " 92 aload_0 [this]\n" + // return 2 7860 " 93 " + xBarCall + 7861 " 96 pop\n" + 7862 " 97 return\n" + 7863 " 98 astore_2 [e]\n" + 7864 " 99 aload_0 [this]\n" + 7865 " 100 " + xBarCall + 7866 " 103 pop\n" + 7867 " 104 aload_0 [this]\n" + 7868 " 105 " + xBarCall + 7869 " 108 pop\n" + 7870 " 109 goto 127\n" + 7871 " 112 astore 5\n" + 7872 " 114 aload_0 [this]\n" + 7873 " 115 " + xBarCall + 7874 " 118 pop\n" + 7875 " 119 aload 5\n" + 7876 " 121 athrow\n" + 7877 " 122 aload_0 [this]\n" + 7878 " 123 " + xBarCall + 7879 " 126 pop\n" + 7880 " 127 return\n" + 7881 " Exception Table:\n" + 7882 " [pc: 17, pc: 22] -> 51 when : any\n" + 7883 " [pc: 6, pc: 32] -> 64 when : any\n" + 7884 " [pc: 38, pc: 64] -> 64 when : any\n" + 7885 " [pc: 2, pc: 32] -> 98 when : java.io.IOException\n" + 7886 " [pc: 38, pc: 92] -> 98 when : java.io.IOException\n" + 7887 " [pc: 2, pc: 32] -> 112 when : any\n" + 7888 " [pc: 38, pc: 92] -> 112 when : any\n" + 7889 " [pc: 98, pc: 104] -> 112 when : any\n" + 7890 " Line numbers:\n" + 7891 " [pc: 0, line: 5]\n" + 7892 " [pc: 2, line: 7]\n" + 7893 " [pc: 17, line: 8]\n" + 7894 " [pc: 22, line: 9]\n" + 7895 " [pc: 32, line: 15]\n" + 7896 " [pc: 37, line: 8]\n" + 7897 " [pc: 38, line: 9]\n" + 7898 " [pc: 86, line: 10]\n" + 7899 " [pc: 92, line: 15]\n" + 7900 " [pc: 97, line: 11]\n" + 7901 " [pc: 98, line: 12]\n" + 7902 " [pc: 99, line: 13]\n" + 7903 " [pc: 104, line: 15]\n" + 7904 " [pc: 112, line: 14]\n" + 7905 " [pc: 114, line: 15]\n" + 7906 " [pc: 119, line: 16]\n" + 7907 " [pc: 122, line: 15]\n" + 7908 " [pc: 127, line: 17]\n" + 7909 " Local variable table:\n" + 7910 " [pc: 0, pc: 128] local: this index: 0 type: X\n" + 7911 " [pc: 2, pc: 128] local: i index: 1 type: int\n" + 7912 " [pc: 17, pc: 62] local: fis index: 4 type: java.io.FileInputStream\n" + 7913 " [pc: 99, pc: 104] local: e index: 2 type: java.io.IOException\n" + 7914 " Stack map table: number of frames 12\n" + 7915 " [pc: 32, full, stack: {}, locals: {X, int, java.lang.Throwable, java.lang.Throwable, java.io.FileInputStream}]\n" + 7916 " [pc: 38, same]\n" + 7917 " [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 7918 " [pc: 62, chop 1 local(s)]\n" + 7919 " [pc: 64, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 7920 " [pc: 74, same]\n" + 7921 " [pc: 84, same]\n" + 7922 " [pc: 86, chop 2 local(s)]\n" + 7923 " [pc: 98, same_locals_1_stack_item, stack: {java.io.IOException}]\n" + 7924 " [pc: 112, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 7925 " [pc: 122, same]\n" + 7926 " [pc: 127, same]\n"; 7927 int index = actualOutput.indexOf(expectedOutput); 7928 if (index == -1 || expectedOutput.length() == 0) { 7929 System.out.println(Util.displayString(actualOutput, 2)); 7930 } 7931 if (index == -1) { 7932 assertEquals("Wrong contents", expectedOutput, actualOutput); 7933 } 7934 } 7935 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=380927 7936 // Verify the reduced range of locals. testBug380927()7937 public void testBug380927() throws Exception { 7938 this.runConformTest( 7939 new String[] { 7940 "X.java", 7941 "public class X {\n" + 7942 " public final static Object f() {\n" + 7943 " final Object a = null;\n" + 7944 " Object b;\n" + 7945 " label: do {\n" + 7946 " switch (0) {\n" + 7947 " case 1: {\n" + 7948 " b = a;\n" + 7949 " }\n" + 7950 " break;\n" + 7951 " default:\n" + 7952 " break label;\n" + 7953 " }\n" + 7954 " } while (true);\n" + 7955 " return a;\n" + 7956 " }\n" + 7957 " public static void main(final String[] args) {\n" + 7958 " f();\n" + 7959 " System.out.println(\"SUCCESS\");\n" + 7960 " }\n" + 7961 "}\n" 7962 }, 7963 "SUCCESS"); 7964 7965 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 7966 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 7967 String actualOutput = 7968 disassembler.disassemble( 7969 classFileBytes, 7970 "\n", 7971 ClassFileBytesDisassembler.DETAILED); 7972 7973 String expectedOutput = 7974 " // Method descriptor #15 ()Ljava/lang/Object;\n" + 7975 " // Stack: 1, Locals: 2\n" + 7976 " public static final java.lang.Object f();\n" + 7977 " 0 aconst_null\n" + 7978 " 1 astore_0 [a]\n" + 7979 " 2 iconst_0\n" + 7980 " 3 tableswitch default: 25\n" + 7981 " case 1: 20\n" + 7982 " 20 aload_0 [a]\n" + 7983 " 21 astore_1 [b]\n" + 7984 " 22 goto 2\n" + 7985 " 25 aload_0 [a]\n" + 7986 " 26 areturn\n" + 7987 " Line numbers:\n" + 7988 " [pc: 0, line: 3]\n" + 7989 " [pc: 2, line: 6]\n" + 7990 " [pc: 20, line: 8]\n" + 7991 " [pc: 22, line: 10]\n" + 7992 " [pc: 25, line: 15]\n" + 7993 " Local variable table:\n" + 7994 " [pc: 2, pc: 27] local: a index: 0 type: java.lang.Object\n" + 7995 " [pc: 22, pc: 25] local: b index: 1 type: java.lang.Object\n" + 7996 " Stack map table: number of frames 3\n" + 7997 " [pc: 2, append: {java.lang.Object}]\n" + 7998 " [pc: 20, same]\n" + 7999 " [pc: 25, same]\n" + 8000 " \n"; 8001 int index = actualOutput.indexOf(expectedOutput); 8002 if (index == -1 || expectedOutput.length() == 0) { 8003 System.out.println(Util.displayString(actualOutput, 2)); 8004 } 8005 if (index == -1) { 8006 assertEquals("Wrong contents", expectedOutput, actualOutput); 8007 } 8008 } 8009 8010 // from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c1 test385593_1()8011 public void test385593_1() throws Exception { 8012 this.runConformTest( 8013 new String[] { 8014 "stackmap/StackMapTableFormatError.java", 8015 "package stackmap;\n" + 8016 "\n" + 8017 "import java.util.Collection;\n" + 8018 "import java.util.Collections;\n" + 8019 "\n" + 8020 "/**\n" + 8021 " * If compiled with Eclipse (compiler target >= 1.6) this snippet causes the\n" + 8022 " * error \"java.lang.ClassFormatError: StackMapTable format error: bad\n" + 8023 " * verification type\" when executed with JaCoCo code coverage. JaCoCo seems to\n" + 8024 " * get confused by unexpected stackmap frames generated by ECJ.\n" + 8025 " */\n" + 8026 "public class StackMapTableFormatError {\n" + 8027 "\n" + 8028 " public static Object exec(Collection<Object> set, Object a,\n" + 8029 " boolean b) {\n" + 8030 " for (Object e : set) {\n" + 8031 " if (a != null && (e == null || b)) {\n" + 8032 " continue;\n" + 8033 " }\n" + 8034 " return null;\n" + 8035 " }\n" + 8036 " return null;\n" + 8037 " }\n" + 8038 " \n" + 8039 " public static void main(String[] args) {\n" + 8040 " exec(Collections.emptySet(), null, false);\n" + 8041 " }\n" + 8042 "\n" + 8043 "}\n" 8044 }); 8045 8046 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 8047 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"stackmap"+File.separator+"StackMapTableFormatError.class")); 8048 String actualOutput = 8049 disassembler.disassemble( 8050 classFileBytes, 8051 "\n", 8052 ClassFileBytesDisassembler.DETAILED); 8053 8054 String expectedOutput = 8055 " // Method descriptor #15 (Ljava/util/Collection;Ljava/lang/Object;Z)Ljava/lang/Object;\n" + 8056 " // Signature: (Ljava/util/Collection<Ljava/lang/Object;>;Ljava/lang/Object;Z)Ljava/lang/Object;\n" + 8057 " // Stack: 1, Locals: 5\n" + 8058 " public static java.lang.Object exec(java.util.Collection set, java.lang.Object a, boolean b);\n" + 8059 " 0 aload_0 [set]\n" + 8060 " 1 invokeinterface java.util.Collection.iterator() : java.util.Iterator [18] [nargs: 1]\n" + 8061 " 6 astore 4\n" + 8062 " 8 goto 36\n" + 8063 " 11 aload 4\n" + 8064 " 13 invokeinterface java.util.Iterator.next() : java.lang.Object [24] [nargs: 1]\n" + 8065 " 18 astore_3 [e]\n" + 8066 " 19 aload_1 [a]\n" + 8067 " 20 ifnull 34\n" + 8068 " 23 aload_3 [e]\n" + 8069 " 24 ifnull 36\n" + 8070 " 27 iload_2 [b]\n" + 8071 " 28 ifeq 34\n" + 8072 " 31 goto 36\n" + 8073 " 34 aconst_null\n" + 8074 " 35 areturn\n" + 8075 " 36 aload 4\n" + 8076 " 38 invokeinterface java.util.Iterator.hasNext() : boolean [30] [nargs: 1]\n" + 8077 " 43 ifne 11\n" + 8078 " 46 aconst_null\n" + 8079 " 47 areturn\n" + 8080 " Line numbers:\n" + 8081 " [pc: 0, line: 16]\n" + 8082 " [pc: 19, line: 17]\n" + 8083 " [pc: 31, line: 18]\n" + 8084 " [pc: 34, line: 20]\n" + 8085 " [pc: 36, line: 16]\n" + 8086 " [pc: 46, line: 22]\n" + 8087 " Local variable table:\n" + 8088 " [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection\n" + 8089 " [pc: 0, pc: 48] local: a index: 1 type: java.lang.Object\n" + 8090 " [pc: 0, pc: 48] local: b index: 2 type: boolean\n" + 8091 " [pc: 19, pc: 36] local: e index: 3 type: java.lang.Object\n" + 8092 " Local variable type table:\n" + 8093 " [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection<java.lang.Object>\n" + 8094 " Stack map table: number of frames 3\n" + 8095 " [pc: 11, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]\n" + 8096 " [pc: 34, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, java.lang.Object, java.util.Iterator}]\n" + 8097 " [pc: 36, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]"; 8098 int index = actualOutput.indexOf(expectedOutput); 8099 if (index == -1 || expectedOutput.length() == 0) { 8100 System.out.println(Util.displayString(actualOutput, 2)); 8101 } 8102 if (index == -1) { 8103 assertEquals("Wrong contents", expectedOutput, actualOutput); 8104 } 8105 } 8106 8107 // from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c11 test385593_2()8108 public void test385593_2() throws Exception { 8109 this.runConformTest( 8110 new String[] { 8111 "snippet/X.java", 8112 "package snippet;\n" + 8113 "\n" + 8114 "\n" + 8115 "public class X { \n" + 8116 " private void foo(boolean delete) { \n" + 8117 " \n" + 8118 " String s = bar(); \n" + 8119 " StringBuffer buffer =new StringBuffer(); \n" + 8120 " \n" + 8121 " try { \n" + 8122 " \n" + 8123 " String[] datas = new String[] { \"\" }; \n" + 8124 " Object[] data= new Object[] { s }; \n" + 8125 " try { \n" + 8126 " buffer.append(datas).append(data); \n" + 8127 " } catch (Exception e) { \n" + 8128 " if (e != null) \n" + 8129 " throw e; \n" + 8130 " return; \n" + 8131 " } \n" + 8132 " \n" + 8133 " if (delete) \n" + 8134 " buffer.delete(0, buffer.length()); \n" + 8135 " \n" + 8136 " } catch (Exception x) { \n" + 8137 " } finally { \n" + 8138 " buffer = null; \n" + 8139 " } \n" + 8140 " } \n" + 8141 " \n" + 8142 " String bar() { \n" + 8143 " return \"\"; \n" + 8144 " } \n" + 8145 " \n" + 8146 " public static void main(String[] args) { \n" + 8147 " new X().foo(false); \n" + 8148 " System.out.println(\"SUCCESS\"); \n" + 8149 " } \n" + 8150 "}\n" 8151 }); 8152 8153 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 8154 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"snippet"+File.separator+"X.class")); 8155 String actualOutput = 8156 disassembler.disassemble( 8157 classFileBytes, 8158 "\n", 8159 ClassFileBytesDisassembler.DETAILED); 8160 8161 String expectedOutput = 8162 "Stack map table: number of frames 7\n" + 8163 " [pc: 49, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer, java.lang.String[], java.lang.Object[]}]\n" + 8164 " [pc: 59, append: {java.lang.Exception}]\n" + 8165 " [pc: 62, chop 1 local(s)]\n" + 8166 " [pc: 79, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer}]\n" + 8167 " [pc: 86, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 8168 " [pc: 93, same]\n" + 8169 " [pc: 95, same]\n"; 8170 8171 int index = actualOutput.indexOf(expectedOutput); 8172 if (index == -1 || expectedOutput.length() == 0) { 8173 System.out.println(Util.displayString(actualOutput, 2)); 8174 } 8175 if (index == -1) { 8176 assertEquals("Wrong contents", expectedOutput, actualOutput); 8177 } 8178 } 8179 // from https://bugs.eclipse.org/bugs/show_bug.cgi?id=394718 test394718()8180 public void test394718() throws Exception { 8181 this.runConformTest( 8182 new String[] { 8183 "X.java", 8184 "public class X\n" + 8185 "{\n" + 8186 " public static Boolean test() throws Exception\n" + 8187 " {\n" + 8188 " try\n" + 8189 " {\n" + 8190 " for (int i = 0; i < 1; i++)\n" + 8191 " {\n" + 8192 " long status = System.currentTimeMillis();\n" + 8193 " if (status < 0)\n" + 8194 " return false;\n" + 8195 " if (status == 1)\n" + 8196 " return false;\n" + 8197 " }\n" + 8198 " \n" + 8199 " return false;\n" + 8200 " }\n" + 8201 " finally\n" + 8202 " {\n" + 8203 " System.currentTimeMillis();\n" + 8204 " }\n" + 8205 " }\n" + 8206 " \n" + 8207 " public static void main(String[] args) throws Exception\n" + 8208 " {\n" + 8209 " System.out.print(\"Starting\");\n" + 8210 " test();\n" + 8211 " System.out.println(\"Done\");\n" + 8212 " }\n" + 8213 "}" 8214 }, 8215 "StartingDone"); 8216 } 8217 8218 // https://bugs.eclipse.org/412203 testBug412203_a()8219 public void testBug412203_a() throws Exception { 8220 if (this.complianceLevel < ClassFileConstants.JDK1_7) return; // using <> 8221 Map options = getCompilerOptions(); 8222 options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED); 8223 options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR); 8224 options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR); 8225 options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING); 8226 options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED); 8227 this.runConformTest( 8228 new String[] { 8229 "X2.java", 8230 "import java.util.*;\n" + 8231 "\n" + 8232 "import org.eclipse.jdt.annotation.NonNullByDefault;\n" + 8233 "\n" + 8234 "class Y {\n" + 8235 " public Y() { }\n" + 8236 "}\n" + 8237 "\n" + 8238 "@NonNullByDefault\n" + 8239 "abstract class X1 {\n" + 8240 "\n" + 8241 " private Object a;\n" + 8242 " private Object b;\n" + 8243 " private Object c;\n" + 8244 " private Object d;\n" + 8245 " private Object e;\n" + 8246 " private Object f;\n" + 8247 "\n" + 8248 " protected Object name;\n" + 8249 "\n" + 8250 " @SuppressWarnings(\"null\")\n" + 8251 " protected X1() {\n" + 8252 " super ();\n" + 8253 " }\n" + 8254 "\n" + 8255 "}\n" + 8256 "public class X2 extends X1 {\n" + 8257 "\n" + 8258 "\n" + 8259 " public static final int ID = 4711;\n" + 8260 "\n" + 8261 " private Object x;\n" + 8262 " private Object y;\n" + 8263 " private Object z;\n" + 8264 "\n" + 8265 " private Runnable runable = new Runnable () {\n" + 8266 " @Override\n" + 8267 " public void run () {\n" + 8268 " // whatever\n" + 8269 " }\n" + 8270 " };\n" + 8271 "\n" + 8272 " private void init () {\n" + 8273 " final Object selector = new Object ();\n" + 8274 " this.name = new Object ();\n" + 8275 " LinkedList<Character> invalidCharactersList = new LinkedList<> ();\n" + 8276 " char[] invalidCharacters = new char[invalidCharactersList.size ()];\n" + 8277 " for (int i = 0; i < invalidCharacters.length; i++) {\n" + 8278 " invalidCharacters[i] = invalidCharactersList.get (i).charValue ();\n" + 8279 " }\n" + 8280 " Y inputVerifier = new Y();\n" + 8281 " }\n" + 8282 "\n" + 8283 "}\n", 8284 }, 8285 "", 8286 getLibsWithNullAnnotations(ClassFileConstants.JDK1_7), 8287 true/*flush*/, 8288 null/*vmArgs*/, 8289 options, 8290 null/*requestor*/, 8291 true/*skipJavac*/); 8292 8293 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 8294 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X2.class")); 8295 String actualOutput = 8296 disassembler.disassemble( 8297 classFileBytes, 8298 "\n", 8299 ClassFileBytesDisassembler.DETAILED); 8300 8301 String expectedOutput = 8302 " // Method descriptor #16 ()V\n" + 8303 " // Stack: 4, Locals: 5\n" + 8304 " private void init();\n" + 8305 " 0 new java.lang.Object [32]\n" + 8306 " 3 dup\n" + 8307 " 4 invokespecial java.lang.Object() [34]\n" + 8308 " 7 astore_1 [selector]\n" + 8309 " 8 aload_0 [this]\n" + 8310 " 9 new java.lang.Object [32]\n" + 8311 " 12 dup\n" + 8312 " 13 invokespecial java.lang.Object() [34]\n" + 8313 " 16 putfield X2.name : java.lang.Object [35]\n" + 8314 " 19 new java.util.LinkedList [38]\n" + 8315 " 22 dup\n" + 8316 " 23 invokespecial java.util.LinkedList() [40]\n" + 8317 " 26 astore_2 [invalidCharactersList]\n" + 8318 " 27 aload_2 [invalidCharactersList]\n" + 8319 " 28 invokevirtual java.util.LinkedList.size() : int [41]\n" + 8320 " 31 newarray char [5]\n" + 8321 " 33 astore_3 [invalidCharacters]\n" + 8322 " 34 iconst_0\n" + 8323 " 35 istore 4 [i]\n" + 8324 " 37 goto 59\n" + 8325 " 40 aload_3 [invalidCharacters]\n" + 8326 " 41 iload 4 [i]\n" + 8327 " 43 aload_2 [invalidCharactersList]\n" + 8328 " 44 iload 4 [i]\n" + 8329 " 46 invokevirtual java.util.LinkedList.get(int) : java.lang.Object [45]\n" + 8330 " 49 checkcast java.lang.Character [49]\n" + 8331 " 52 invokevirtual java.lang.Character.charValue() : char [51]\n" + 8332 " 55 castore\n" + 8333 " 56 iinc 4 1 [i]\n" + 8334 " 59 iload 4 [i]\n" + 8335 " 61 aload_3 [invalidCharacters]\n" + 8336 " 62 arraylength\n" + 8337 " 63 if_icmplt 40\n" + 8338 " 66 new Y [55]\n" + 8339 " 69 dup\n" + 8340 " 70 invokespecial Y() [57]\n" + 8341 " 73 astore 4 [inputVerifier]\n" + 8342 " 75 return\n" + 8343 " Line numbers:\n" + 8344 " [pc: 0, line: 44]\n" + 8345 " [pc: 8, line: 45]\n" + 8346 " [pc: 19, line: 46]\n" + 8347 " [pc: 27, line: 47]\n" + 8348 " [pc: 34, line: 48]\n" + 8349 " [pc: 40, line: 49]\n" + 8350 " [pc: 56, line: 48]\n" + 8351 " [pc: 66, line: 51]\n" + 8352 " [pc: 75, line: 52]\n" + 8353 " Local variable table:\n" + 8354 " [pc: 0, pc: 76] local: this index: 0 type: X2\n" + 8355 " [pc: 8, pc: 76] local: selector index: 1 type: java.lang.Object\n" + 8356 " [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList\n" + 8357 " [pc: 34, pc: 76] local: invalidCharacters index: 3 type: char[]\n" + 8358 " [pc: 37, pc: 66] local: i index: 4 type: int\n" + 8359 " [pc: 75, pc: 76] local: inputVerifier index: 4 type: Y\n" + 8360 " Local variable type table:\n" + 8361 " [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList<java.lang.Character>\n" + 8362 " Stack map table: number of frames 2\n" + 8363 " [pc: 40, full, stack: {}, locals: {X2, java.lang.Object, java.util.LinkedList, char[], int}]\n" + 8364 " [pc: 59, same]\n"; 8365 8366 int index = actualOutput.indexOf(expectedOutput); 8367 if (index == -1 || expectedOutput.length() == 0) { 8368 System.out.println(Util.displayString(actualOutput, 2)); 8369 } 8370 if (index == -1) { 8371 assertEquals("Wrong contents", expectedOutput, actualOutput); 8372 } 8373 } 8374 8375 // https://bugs.eclipse.org/412203 8376 // yet simplified version - using FieldReference testBug412203_b()8377 public void testBug412203_b() throws Exception { 8378 Map options = getCompilerOptions(); 8379 options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED); 8380 options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR); 8381 options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR); 8382 options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING); 8383 options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED); 8384 this.runConformTest( 8385 new String[] { 8386 "X2.java", 8387 "import java.util.LinkedList;\n" + 8388 "\n" + 8389 "import org.eclipse.jdt.annotation.NonNull;\n" + 8390 "\n" + 8391 "abstract class X1 {\n" + 8392 " protected @NonNull Object name = new Object();\n" + 8393 "}\n" + 8394 "\n" + 8395 "public class X2 extends X1 {\n" + 8396 " void init () {\n" + 8397 " this.name = new Object ();\n" + 8398 " LinkedList<Character> l = new LinkedList<Character> ();\n" + 8399 " char[] cs = new char[l.size ()];\n" + 8400 " for (int i = 0; i < cs.length; i++) {\n" + 8401 " cs[i] = l.get (i).charValue ();\n" + 8402 " }\n" + 8403 " Object o2 = new Object();\n" + 8404 " }\n" + 8405 "}\n", 8406 }, 8407 "", 8408 getLibsWithNullAnnotations(ClassFileConstants.JDK1_7), 8409 true/*flush*/, 8410 null/*vmArgs*/, 8411 options, 8412 null/*requestor*/, 8413 true/*skipJavac*/); 8414 8415 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 8416 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X2.class")); 8417 String actualOutput = 8418 disassembler.disassemble( 8419 classFileBytes, 8420 "\n", 8421 ClassFileBytesDisassembler.DETAILED); 8422 8423 String expectedOutput = 8424 " // Method descriptor #6 ()V\n" + 8425 " // Stack: 4, Locals: 4\n" + 8426 " void init();\n" + 8427 " 0 aload_0 [this]\n" + 8428 " 1 new java.lang.Object [15]\n" + 8429 " 4 dup\n" + 8430 " 5 invokespecial java.lang.Object() [17]\n" + 8431 " 8 putfield X2.name : java.lang.Object [18]\n" + 8432 " 11 new java.util.LinkedList [22]\n" + 8433 " 14 dup\n" + 8434 " 15 invokespecial java.util.LinkedList() [24]\n" + 8435 " 18 astore_1 [l]\n" + 8436 " 19 aload_1 [l]\n" + 8437 " 20 invokevirtual java.util.LinkedList.size() : int [25]\n" + 8438 " 23 newarray char [5]\n" + 8439 " 25 astore_2 [cs]\n" + 8440 " 26 iconst_0\n" + 8441 " 27 istore_3 [i]\n" + 8442 " 28 goto 48\n" + 8443 " 31 aload_2 [cs]\n" + 8444 " 32 iload_3 [i]\n" + 8445 " 33 aload_1 [l]\n" + 8446 " 34 iload_3 [i]\n" + 8447 " 35 invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" + 8448 " 38 checkcast java.lang.Character [33]\n" + 8449 " 41 invokevirtual java.lang.Character.charValue() : char [35]\n" + 8450 " 44 castore\n" + 8451 " 45 iinc 3 1 [i]\n" + 8452 " 48 iload_3 [i]\n" + 8453 " 49 aload_2 [cs]\n" + 8454 " 50 arraylength\n" + 8455 " 51 if_icmplt 31\n" + 8456 " 54 new java.lang.Object [15]\n" + 8457 " 57 dup\n" + 8458 " 58 invokespecial java.lang.Object() [17]\n" + 8459 " 61 astore_3 [o2]\n" + 8460 " 62 return\n" + 8461 " Line numbers:\n" + 8462 " [pc: 0, line: 11]\n" + 8463 " [pc: 11, line: 12]\n" + 8464 " [pc: 19, line: 13]\n" + 8465 " [pc: 26, line: 14]\n" + 8466 " [pc: 31, line: 15]\n" + 8467 " [pc: 45, line: 14]\n" + 8468 " [pc: 54, line: 17]\n" + 8469 " [pc: 62, line: 18]\n" + 8470 " Local variable table:\n" + 8471 " [pc: 0, pc: 63] local: this index: 0 type: X2\n" + 8472 " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" + 8473 " [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" + 8474 " [pc: 28, pc: 54] local: i index: 3 type: int\n" + 8475 " [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" + 8476 " Local variable type table:\n" + 8477 " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" + 8478 " Stack map table: number of frames 2\n" + 8479 " [pc: 31, append: {java.util.LinkedList, char[], int}]\n" + 8480 " [pc: 48, same]\n" + 8481 "}"; 8482 8483 int index = actualOutput.indexOf(expectedOutput); 8484 if (index == -1 || expectedOutput.length() == 0) { 8485 System.out.println(Util.displayString(actualOutput, 2)); 8486 } 8487 if (index == -1) { 8488 assertEquals("Wrong contents", expectedOutput, actualOutput); 8489 } 8490 } 8491 8492 // https://bugs.eclipse.org/412203 8493 // yet simplified version - using SingleNameReference testBug412203_c()8494 public void testBug412203_c() throws Exception { 8495 Map options = getCompilerOptions(); 8496 options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED); 8497 options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR); 8498 options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR); 8499 options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING); 8500 options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED); 8501 this.runConformTest( 8502 new String[] { 8503 "X2.java", 8504 "import java.util.LinkedList;\n" + 8505 "\n" + 8506 "import org.eclipse.jdt.annotation.NonNull;\n" + 8507 "\n" + 8508 "abstract class X1 {\n" + 8509 " protected @NonNull Object name = new Object();\n" + 8510 "}\n" + 8511 "\n" + 8512 "public class X2 extends X1 {\n" + 8513 " void init () {\n" + 8514 " name = new Object ();\n" + 8515 " LinkedList<Character> l = new LinkedList<Character> ();\n" + 8516 " char[] cs = new char[l.size ()];\n" + 8517 " for (int i = 0; i < cs.length; i++) {\n" + 8518 " cs[i] = l.get (i).charValue ();\n" + 8519 " }\n" + 8520 " Object o2 = new Object();\n" + 8521 " }\n" + 8522 "}\n", 8523 }, 8524 "", 8525 getLibsWithNullAnnotations(ClassFileConstants.JDK1_7), 8526 true/*flush*/, 8527 null/*vmArgs*/, 8528 options, 8529 null/*requestor*/, 8530 true/*skipJavac*/); 8531 8532 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 8533 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X2.class")); 8534 String actualOutput = 8535 disassembler.disassemble( 8536 classFileBytes, 8537 "\n", 8538 ClassFileBytesDisassembler.DETAILED); 8539 8540 String expectedOutput = 8541 " // Method descriptor #6 ()V\n" + 8542 " // Stack: 4, Locals: 4\n" + 8543 " void init();\n" + 8544 " 0 aload_0 [this]\n" + 8545 " 1 new java.lang.Object [15]\n" + 8546 " 4 dup\n" + 8547 " 5 invokespecial java.lang.Object() [17]\n" + 8548 " 8 putfield X2.name : java.lang.Object [18]\n" + 8549 " 11 new java.util.LinkedList [22]\n" + 8550 " 14 dup\n" + 8551 " 15 invokespecial java.util.LinkedList() [24]\n" + 8552 " 18 astore_1 [l]\n" + 8553 " 19 aload_1 [l]\n" + 8554 " 20 invokevirtual java.util.LinkedList.size() : int [25]\n" + 8555 " 23 newarray char [5]\n" + 8556 " 25 astore_2 [cs]\n" + 8557 " 26 iconst_0\n" + 8558 " 27 istore_3 [i]\n" + 8559 " 28 goto 48\n" + 8560 " 31 aload_2 [cs]\n" + 8561 " 32 iload_3 [i]\n" + 8562 " 33 aload_1 [l]\n" + 8563 " 34 iload_3 [i]\n" + 8564 " 35 invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" + 8565 " 38 checkcast java.lang.Character [33]\n" + 8566 " 41 invokevirtual java.lang.Character.charValue() : char [35]\n" + 8567 " 44 castore\n" + 8568 " 45 iinc 3 1 [i]\n" + 8569 " 48 iload_3 [i]\n" + 8570 " 49 aload_2 [cs]\n" + 8571 " 50 arraylength\n" + 8572 " 51 if_icmplt 31\n" + 8573 " 54 new java.lang.Object [15]\n" + 8574 " 57 dup\n" + 8575 " 58 invokespecial java.lang.Object() [17]\n" + 8576 " 61 astore_3 [o2]\n" + 8577 " 62 return\n" + 8578 " Line numbers:\n" + 8579 " [pc: 0, line: 11]\n" + 8580 " [pc: 11, line: 12]\n" + 8581 " [pc: 19, line: 13]\n" + 8582 " [pc: 26, line: 14]\n" + 8583 " [pc: 31, line: 15]\n" + 8584 " [pc: 45, line: 14]\n" + 8585 " [pc: 54, line: 17]\n" + 8586 " [pc: 62, line: 18]\n" + 8587 " Local variable table:\n" + 8588 " [pc: 0, pc: 63] local: this index: 0 type: X2\n" + 8589 " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" + 8590 " [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" + 8591 " [pc: 28, pc: 54] local: i index: 3 type: int\n" + 8592 " [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" + 8593 " Local variable type table:\n" + 8594 " [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" + 8595 " Stack map table: number of frames 2\n" + 8596 " [pc: 31, append: {java.util.LinkedList, char[], int}]\n" + 8597 " [pc: 48, same]\n" + 8598 "}"; 8599 8600 int index = actualOutput.indexOf(expectedOutput); 8601 if (index == -1 || expectedOutput.length() == 0) { 8602 System.out.println(Util.displayString(actualOutput, 2)); 8603 } 8604 if (index == -1) { 8605 assertEquals("Wrong contents", expectedOutput, actualOutput); 8606 } 8607 } testBug5409021()8608 public void testBug5409021() throws Exception { 8609 this.runConformTest( 8610 new String[] { 8611 "X.java", 8612 "public class X {\n" + 8613 "\n" + 8614 " public static void main(String[] args) {\n" + 8615 " X error = new X();\n" + 8616 " error.reproduce(\"hello\");\n" + 8617 " System.out.println(\"DONE\");\n" + 8618 " }\n" + 8619 " \n" + 8620 " public Object reproduce(Object param) throws RuntimeException {\n" + 8621 " Object local;\n" + 8622 " try {\n" + 8623 " return param; \n" + 8624 " } \n" + 8625 " catch (RuntimeException e) {\n" + 8626 " return null;\n" + 8627 " } \n" + 8628 " finally {\n" + 8629 " if (param != null) {\n" + 8630 " System.out.println(\"FINALLY\");\n" + 8631 " }\n" + 8632 " local = null;\n" + 8633 " }\n" + 8634 " }\n" + 8635 "}\n" + 8636 "", 8637 }, 8638 "FINALLY\n" + 8639 "DONE"); 8640 8641 ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler(); 8642 byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator +"X.class")); 8643 String actualOutput = 8644 disassembler.disassemble( 8645 classFileBytes, 8646 "\n", 8647 ClassFileBytesDisassembler.DETAILED); 8648 String expectedOutput = 8649 " // Stack: 2, Locals: 6\n" + 8650 " public java.lang.Object reproduce(java.lang.Object param) throws java.lang.RuntimeException;\n" + 8651 " 0 aload_1 [param]\n" + 8652 " 1 astore 5\n" + 8653 " 3 aload_1 [param]\n" + 8654 " 4 ifnull 15\n" + 8655 " 7 getstatic java.lang.System.out : java.io.PrintStream [23]\n" + 8656 " 10 ldc <String \"FINALLY\"> [43]\n" + 8657 " 12 invokevirtual java.io.PrintStream.println(java.lang.String) : void [31]\n" + 8658 " 15 aconst_null\n" + 8659 " 16 astore_2 [local]\n" + 8660 " 17 aload 5\n" + 8661 " 19 areturn\n" + 8662 " 20 astore_3 [e]\n" + 8663 " 21 aload_1 [param]\n" + 8664 " 22 ifnull 33\n" + 8665 " 25 getstatic java.lang.System.out : java.io.PrintStream [23]\n" + 8666 " 28 ldc <String \"FINALLY\"> [43]\n" + 8667 " 30 invokevirtual java.io.PrintStream.println(java.lang.String) : void [31]\n" + 8668 " 33 aconst_null\n" + 8669 " 34 astore_2 [local]\n" + 8670 " 35 aconst_null\n" + 8671 " 36 areturn\n" + 8672 " 37 astore 4\n" + 8673 " 39 aload_1 [param]\n" + 8674 " 40 ifnull 51\n" + 8675 " 43 getstatic java.lang.System.out : java.io.PrintStream [23]\n" + 8676 " 46 ldc <String \"FINALLY\"> [43]\n" + 8677 " 48 invokevirtual java.io.PrintStream.println(java.lang.String) : void [31]\n" + 8678 " 51 aconst_null\n" + 8679 " 52 astore_2 [local]\n" + 8680 " 53 aload 4\n" + 8681 " 55 athrow\n" + 8682 " Exception Table:\n" + 8683 " [pc: 0, pc: 3] -> 20 when : java.lang.RuntimeException\n" + 8684 " [pc: 0, pc: 3] -> 37 when : any\n" + 8685 " [pc: 20, pc: 21] -> 37 when : any\n" + 8686 " Line numbers:\n" + 8687 " [pc: 0, line: 12]\n" + 8688 " [pc: 3, line: 18]\n" + 8689 " [pc: 7, line: 19]\n" + 8690 " [pc: 15, line: 21]\n" + 8691 " [pc: 17, line: 12]\n" + 8692 " [pc: 20, line: 14]\n" + 8693 " [pc: 21, line: 18]\n" + 8694 " [pc: 25, line: 19]\n" + 8695 " [pc: 33, line: 21]\n" + 8696 " [pc: 35, line: 15]\n" + 8697 " [pc: 37, line: 17]\n" + 8698 " [pc: 39, line: 18]\n" + 8699 " [pc: 43, line: 19]\n" + 8700 " [pc: 51, line: 21]\n" + 8701 " [pc: 53, line: 22]\n" + 8702 " Local variable table:\n" + 8703 " [pc: 0, pc: 56] local: this index: 0 type: X\n" + 8704 " [pc: 0, pc: 56] local: param index: 1 type: java.lang.Object\n" + 8705 " [pc: 17, pc: 20] local: local index: 2 type: java.lang.Object\n" + 8706 " [pc: 35, pc: 37] local: local index: 2 type: java.lang.Object\n" + 8707 " [pc: 53, pc: 56] local: local index: 2 type: java.lang.Object\n" + 8708 " [pc: 21, pc: 37] local: e index: 3 type: java.lang.RuntimeException\n" + 8709 " Stack map table: number of frames 5\n" + 8710 " [pc: 15, full, stack: {}, locals: {X, java.lang.Object, _, _, _, java.lang.Object}]\n" + 8711 " [pc: 20, full, stack: {java.lang.RuntimeException}, locals: {X, java.lang.Object}]\n" + 8712 " [pc: 33, full, stack: {}, locals: {X, java.lang.Object, _, java.lang.RuntimeException}]\n" + 8713 " [pc: 37, full, stack: {java.lang.Throwable}, locals: {X, java.lang.Object}]\n" + 8714 " [pc: 51, full, stack: {}, locals: {X, java.lang.Object, _, _, java.lang.Throwable}]\n" + 8715 "}"; 8716 8717 int index = actualOutput.indexOf(expectedOutput); 8718 if (index == -1 || expectedOutput.length() == 0) { 8719 System.out.println(Util.displayString(actualOutput, 2)); 8720 } 8721 if (index == -1) { 8722 assertEquals("Wrong contents", expectedOutput, actualOutput); 8723 } 8724 } 8725 test551368()8726 public void test551368() { 8727 this.runConformTest( 8728 new String[] { 8729 "X.java", 8730 "interface A {\n" + 8731 "}\n" + 8732 "class B implements A {\n" + 8733 " public C c;\n" + 8734 " \n" + 8735 " protected B original() {\n" + 8736 " return this;\n" + 8737 " }\n" + 8738 "}\n" + 8739 "class C {\n" + 8740 " C parent;\n" + 8741 " A context;\n" + 8742 "}\n" + 8743 "class F extends C {\n" + 8744 " \n" + 8745 "}\n" + 8746 "class G extends C {\n" + 8747 " \n" + 8748 "}\n" + 8749 "abstract class D implements A {\n" + 8750 " public F c;\n" + 8751 "}\n" + 8752 "class E implements A {\n" + 8753 " public G c;\n" + 8754 "}\n" + 8755 "public class X {\n" + 8756 " boolean foo(A a) {\n" + 8757 " if (a instanceof B && a != ((B) a).original())\n" + 8758 " return true;\n" + 8759 " C aC = a instanceof D ? ((D) a).c :\n" + 8760 " a instanceof E ? ((E) a).c : \n" + 8761 " a instanceof B ? ((B) a).c :\n" + 8762 " null;\n" + 8763 " return aC != null ? foo(aC.parent.context) : false;\n" + 8764 " }\n" + 8765 " public static void main(String[] args) {\n" + 8766 " System.out.println(\"SUCCESS\");\n" + 8767 " }\n" + 8768 "}", 8769 }, 8770 "SUCCESS"); 8771 } test551368_2()8772 public void test551368_2() { 8773 this.runConformTest( 8774 new String[] { 8775 "X.java", 8776 "public class X {\n" + 8777 "\n" + 8778 " int size;\n" + 8779 " char[][][] elements;\n" + 8780 "\n" + 8781 " public X() {\n" + 8782 " this.size = 0;\n" + 8783 " this.elements = new char[10][][];\n" + 8784 " }\n" + 8785 "\n" + 8786 " public void insertIntoArray(char[][][] target) {\n" + 8787 " }\n" + 8788 "\n" + 8789 " public void add(char[][] newElement) {\n" + 8790 " insertIntoArray(this.size < this.elements.length ? this.elements : new char[this.elements.length * 2][][]);\n" + 8791 " }\n" + 8792 "\n" + 8793 " public static void main(String[] args) {\n" + 8794 " System.out.println(\"SUCCESS\");\n" + 8795 " }\n" + 8796 "}", 8797 }, 8798 "SUCCESS"); 8799 } test551368_3()8800 public void test551368_3() { 8801 this.runConformTest( 8802 new String[] { 8803 "X.java", 8804 "class B {\n" + 8805 " public boolean bar() {\n" + 8806 " return false;\n" + 8807 " }\n" + 8808 " public void foo() {}\n" + 8809 "}\n" + 8810 "public class X {\n" + 8811 " \n" + 8812 " public B foo(boolean test) {\n" + 8813 " B b =\n" + 8814 " test ?\n" + 8815 " new B() {\n" + 8816 " @Override\n" + 8817 " public boolean bar() {\n" + 8818 " return true;\n" + 8819 " }\n" + 8820 " } :\n" + 8821 " new B();\n" + 8822 " b.foo();\n" + 8823 " return b;\n" + 8824 " }\n" + 8825 "\n" + 8826 " public static void main(String[] args) {\n" + 8827 " System.out.println(\"SUCCESS\");\n" + 8828 " }\n" + 8829 "}", 8830 }, 8831 "SUCCESS"); 8832 } test558844()8833 public void test558844() { 8834 this.runConformTest( 8835 new String[] { 8836 "X.java", 8837 "public class X {\n" + 8838 " \n" + 8839 " public static void main( String[] args ) {\n" + 8840 " System.out.println(new X().getText());\n" + 8841 " }\n" + 8842 "\n" + 8843 " public String getText() {\n" + 8844 " Long lValue1 = getValue1();\n" + 8845 " Long lValue2 = getValue2();\n" + 8846 " return ( isValue1() ? \"\" : ( lValue1 == null ? \"\" : lValue1.toString() ) + \"-\" ) + ( lValue2 == null ? \"\" : lValue2.toString() );\n" + 8847 " }\n" + 8848 "\n" + 8849 " private Long getValue1() {\n" + 8850 " return Long.valueOf( 1 );\n" + 8851 " }\n" + 8852 "\n" + 8853 " private Long getValue2() {\n" + 8854 " return Long.valueOf( 1 );\n" + 8855 " }\n" + 8856 "\n" + 8857 " private boolean isValue1() {\n" + 8858 " return false;\n" + 8859 " }\n" + 8860 "}", 8861 }, 8862 "1-1"); 8863 } test562854()8864 public void test562854() { 8865 this.runConformTest( 8866 new String[] { 8867 "bug/Bug.java", 8868 "package bug;\n" + 8869 "public class Bug {\n" + 8870 " public static void main(String[] args) {\n" + 8871 " F(args.length > 1 ? pkg.Base.derived1() : pkg.Base.derived2());\n" + " }\n" + "\n" + 8872 " static void F(pkg.Base base) {\n" + 8873 " System.out.println(base.getClass().getCanonicalName());\n" + 8874 " }\n" + 8875 "}", 8876 "pkg/Base.java", 8877 "package pkg;\n" + 8878 "public abstract class Base {\n" + 8879 " public static Derived1 derived1() {\n" + 8880 " return new Derived1();\n" + 8881 " }\n" + 8882 "\n" + 8883 " public static Derived2 derived2() {\n" + 8884 " return new Derived2();\n" + 8885 " }\n" + 8886 "}", 8887 "pkg/Derived1.java", 8888 "package pkg;\n" + 8889 "class Derived1 extends Base {}", 8890 "pkg/Derived2.java", 8891 "package pkg;\n" + 8892 "class Derived2 extends Derived1 {}", 8893 }, 8894 "pkg.Derived2"); 8895 } test562854_2()8896 public void test562854_2() { 8897 this.runConformTest( 8898 new String[] { 8899 "bug/Bug.java", 8900 "package bug;\n" + 8901 "public class Bug {\n" + 8902 " public static void main(String[] args) {\n" + 8903 " F(args.length > 1 ? pkg.Base.derived1() : pkg.Base.derived2());\n" + " }\n" + "\n" + 8904 " static void F(pkg.Base base) {\n" + 8905 " System.out.println(base.getClass().getCanonicalName());\n" + 8906 " }\n" + 8907 "}", 8908 "pkg/Base.java", 8909 "package pkg;\n" + 8910 "public abstract class Base {\n" + 8911 " public static Derived1 derived1() {\n" + 8912 " return new Derived1();\n" + 8913 " }\n" + 8914 "\n" + 8915 " public static Derived2 derived2() {\n" + 8916 " return new Derived2();\n" + 8917 " }\n" + 8918 "}", 8919 "pkg/Derived1.java", 8920 "package pkg;\n" + 8921 "public class Derived1 extends Base {}", 8922 "pkg/Derived2.java", 8923 "package pkg;\n" + 8924 "public class Derived2 extends Derived1 {}", 8925 }, 8926 "pkg.Derived2"); 8927 } 8928 } 8929