### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java,v retrieving revision 1.63 diff -u -r1.63 ReturnStatement.java --- compiler/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java 27 Jun 2008 16:03:55 -0000 1.63 +++ compiler/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java 24 Sep 2008 00:53:43 -0000 @@ -75,6 +75,8 @@ prepareSaveValueLocation(tryStatement); } saveValueNeeded = true; + this.initStateIndex = + currentScope.methodScope().recordInitializationStates(flowInfo); } } } else if (traversedContext instanceof InitializationFlowContext) { Index: compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java,v retrieving revision 1.110 diff -u -r1.110 TryStatement.java --- compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java 12 Sep 2008 13:28:53 -0000 1.110 +++ compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java 24 Sep 2008 00:53:43 -0000 @@ -664,7 +664,7 @@ continue nextReusableTarget; } // current target has been used in the past, simply branch to its label - if ((this.reusableJSRStateIndexes[i] != stateIndex) && finallyMode == FINALLY_INLINE && isStackMapFrameCodeStream) { + if ((this.reusableJSRStateIndexes[i] != stateIndex) && finallyMode == FINALLY_INLINE) { reuseTargetLocation = false; break nextReusableTarget; } else { #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java,v retrieving revision 1.49 diff -u -r1.49 TryStatementTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java 27 Jun 2008 16:04:44 -0000 1.49 +++ src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java 24 Sep 2008 00:53:46 -0000 @@ -24,7 +24,7 @@ static { // TESTS_NAMES = new String[] { "test000" }; -// TESTS_NUMBERS = new int[] { 63, 64 }; +// TESTS_NUMBERS = new int[] { 40, 41, 43, 45, 63, 64 }; // TESTS_RANGE = new int[] { 11, -1 }; } public TryStatementTest(String name) { @@ -1966,31 +1966,35 @@ " 14 return\n" + " 15 aconst_null\n" + " 16 astore_2 [o]\n" + - " 17 goto 6\n" + - " 20 astore_3\n" + - " 21 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + - " 24 ldc [22]\n" + - " 26 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + - " 29 aload_3\n" + - " 30 athrow\n" + + " 17 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + + " 20 ldc [22]\n" + + " 22 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + + " 25 return\n" + + " 26 astore_3\n" + + " 27 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + + " 30 ldc [22]\n" + + " 32 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + + " 35 aload_3\n" + + " 36 athrow\n" + " Exception Table:\n" + - " [pc: 0, pc: 6] -> 20 when : any\n" + - " [pc: 15, pc: 20] -> 20 when : any\n" + + " [pc: 0, pc: 6] -> 26 when : any\n" + + " [pc: 15, pc: 17] -> 26 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 4, line: 5]\n" + " [pc: 6, line: 12]\n" + " [pc: 14, line: 6]\n" + " [pc: 15, line: 8]\n" + - " [pc: 17, line: 9]\n" + - " [pc: 20, line: 11]\n" + - " [pc: 21, line: 12]\n" + - " [pc: 29, line: 13]\n" + + " [pc: 17, line: 12]\n" + + " [pc: 25, line: 9]\n" + + " [pc: 26, line: 11]\n" + + " [pc: 27, line: 12]\n" + + " [pc: 35, line: 13]\n" + " Local variable table:\n" + - " [pc: 0, pc: 31] local: this index: 0 type: X\n" + - " [pc: 0, pc: 31] local: b index: 1 type: boolean\n" + + " [pc: 0, pc: 37] local: this index: 0 type: X\n" + + " [pc: 0, pc: 37] local: b index: 1 type: boolean\n" + " [pc: 6, pc: 15] local: i index: 2 type: int\n" + - " [pc: 17, pc: 20] local: o index: 2 type: java.lang.Object\n"; + " [pc: 17, pc: 26] local: o index: 2 type: java.lang.Object\n"; } else { expectedOutput = " // Method descriptor #15 (Z)V\n" + " // Stack: 2, Locals: 4\n" + @@ -2059,7 +2063,7 @@ "X.java", "public class X {\n" + " public void foo(boolean b) {\n" + - " try { \n" + + " try {\n" + " int i = 0;\n" + " return;\n" + " } catch(Exception e) {\n" + @@ -2127,31 +2131,35 @@ " 7 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + " 10 return\n" + " 11 astore_2 [e]\n" + - " 12 goto 2\n" + - " 15 astore_3\n" + - " 16 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + - " 19 ldc [22]\n" + - " 21 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + - " 24 aload_3\n" + - " 25 athrow\n" + + " 12 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + + " 15 ldc [22]\n" + + " 17 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + + " 20 return\n" + + " 21 astore_3\n" + + " 22 getstatic java.lang.System.out : java.io.PrintStream [16]\n" + + " 25 ldc [22]\n" + + " 27 invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + + " 30 aload_3\n" + + " 31 athrow\n" + " Exception Table:\n" + " [pc: 0, pc: 2] -> 11 when : java.lang.Exception\n" + - " [pc: 0, pc: 2] -> 15 when : any\n" + - " [pc: 11, pc: 15] -> 15 when : any\n" + + " [pc: 0, pc: 2] -> 21 when : any\n" + + " [pc: 11, pc: 12] -> 21 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 2, line: 9]\n" + " [pc: 10, line: 5]\n" + " [pc: 11, line: 6]\n" + - " [pc: 12, line: 7]\n" + - " [pc: 15, line: 8]\n" + - " [pc: 16, line: 9]\n" + - " [pc: 24, line: 10]\n" + + " [pc: 12, line: 9]\n" + + " [pc: 20, line: 7]\n" + + " [pc: 21, line: 8]\n" + + " [pc: 22, line: 9]\n" + + " [pc: 30, line: 10]\n" + " Local variable table:\n" + - " [pc: 0, pc: 26] local: this index: 0 type: X\n" + - " [pc: 0, pc: 26] local: b index: 1 type: boolean\n" + + " [pc: 0, pc: 32] local: this index: 0 type: X\n" + + " [pc: 0, pc: 32] local: b index: 1 type: boolean\n" + " [pc: 2, pc: 11] local: i index: 2 type: int\n" + - " [pc: 12, pc: 15] local: e index: 2 type: java.lang.Exception\n"; + " [pc: 12, pc: 21] local: e index: 2 type: java.lang.Exception\n"; } else { expectedOutput = " // Method descriptor #15 (Z)V\n" + " // Stack: 2, Locals: 4\n" + @@ -2523,43 +2531,76 @@ " 63 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + " 66 aload_3 [contexts]\n" + " 67 invokevirtual java.io.PrintStream.print(java.lang.Object) : void [21]\n" + - " 70 goto 13\n" + - " 73 astore 5\n" + - " 75 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 78 new java.lang.StringBuilder [27]\n" + - " 81 dup\n" + - " 82 ldc \"> [29]\n" + - " 84 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + - " 87 iload_1 [a]\n" + - " 88 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + - " 91 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + - " 94 invokevirtual java.io.PrintStream.print(java.lang.String) : void [42]\n" + - " 97 aload 5\n" + - " 99 athrow\n" + - " 100 astore_2 [e]\n" + - " 101 goto 35\n" + - " 104 astore 6\n" + - " 106 iconst_0\n" + - " 107 istore 7 [var]\n" + - " 109 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 112 new java.lang.StringBuilder [27]\n" + - " 115 dup\n" + - " 116 ldc \"> [44]\n" + - " 118 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + - " 121 iload_1 [a]\n" + - " 122 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + - " 125 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + - " 128 invokevirtual java.io.PrintStream.println(java.lang.String) : void [46]\n" + - " 131 aload 6\n" + - " 133 athrow\n" + + " 70 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 73 new java.lang.StringBuilder [27]\n" + + " 76 dup\n" + + " 77 ldc \"> [29]\n" + + " 79 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + + " 82 iload_1 [a]\n" + + " 83 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + + " 86 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + + " 89 invokevirtual java.io.PrintStream.print(java.lang.String) : void [42]\n" + + " 92 iconst_0\n" + + " 93 istore 7 [var]\n" + + " 95 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 98 new java.lang.StringBuilder [27]\n" + + " 101 dup\n" + + " 102 ldc \"> [44]\n" + + " 104 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + + " 107 iload_1 [a]\n" + + " 108 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + + " 111 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + + " 114 invokevirtual java.io.PrintStream.println(java.lang.String) : void [46]\n" + + " 117 return\n" + + " 118 astore 5\n" + + " 120 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 123 new java.lang.StringBuilder [27]\n" + + " 126 dup\n" + + " 127 ldc \"> [29]\n" + + " 129 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + + " 132 iload_1 [a]\n" + + " 133 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + + " 136 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + + " 139 invokevirtual java.io.PrintStream.print(java.lang.String) : void [42]\n" + + " 142 aload 5\n" + + " 144 athrow\n" + + " 145 astore_2 [e]\n" + + " 146 iconst_0\n" + + " 147 istore 7 [var]\n" + + " 149 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 152 new java.lang.StringBuilder [27]\n" + + " 155 dup\n" + + " 156 ldc \"> [44]\n" + + " 158 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + + " 161 iload_1 [a]\n" + + " 162 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + + " 165 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + + " 168 invokevirtual java.io.PrintStream.println(java.lang.String) : void [46]\n" + + " 171 return\n" + + " 172 astore 6\n" + + " 174 iconst_0\n" + + " 175 istore 7 [var]\n" + + " 177 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 180 new java.lang.StringBuilder [27]\n" + + " 183 dup\n" + + " 184 ldc \"> [44]\n" + + " 186 invokespecial java.lang.StringBuilder(java.lang.String) [31]\n" + + " 189 iload_1 [a]\n" + + " 190 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [34]\n" + + " 193 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [38]\n" + + " 196 invokevirtual java.io.PrintStream.println(java.lang.String) : void [46]\n" + + " 199 aload 6\n" + + " 201 athrow\n" + " Exception Table:\n" + " [pc: 6, pc: 13] -> 61 when : java.lang.NullPointerException\n" + - " [pc: 6, pc: 13] -> 73 when : any\n" + - " [pc: 61, pc: 73] -> 73 when : any\n" + - " [pc: 2, pc: 35] -> 100 when : java.lang.Exception\n" + - " [pc: 61, pc: 100] -> 100 when : java.lang.Exception\n" + - " [pc: 2, pc: 35] -> 104 when : any\n" + - " [pc: 61, pc: 104] -> 104 when : any\n" + + " [pc: 6, pc: 13] -> 118 when : any\n" + + " [pc: 61, pc: 70] -> 118 when : any\n" + + " [pc: 2, pc: 35] -> 145 when : java.lang.Exception\n" + + " [pc: 61, pc: 92] -> 145 when : java.lang.Exception\n" + + " [pc: 118, pc: 145] -> 145 when : java.lang.Exception\n" + + " [pc: 2, pc: 35] -> 172 when : any\n" + + " [pc: 61, pc: 92] -> 172 when : any\n" + + " [pc: 118, pc: 146] -> 172 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 3]\n" + " [pc: 2, line: 5]\n" + @@ -2571,25 +2612,32 @@ " [pc: 60, line: 9]\n" + " [pc: 61, line: 10]\n" + " [pc: 63, line: 11]\n" + - " [pc: 70, line: 12]\n" + - " [pc: 73, line: 13]\n" + - " [pc: 75, line: 14]\n" + - " [pc: 97, line: 15]\n" + - " [pc: 100, line: 16]\n" + - " [pc: 101, line: 17]\n" + - " [pc: 104, line: 18]\n" + - " [pc: 106, line: 19]\n" + - " [pc: 109, line: 20]\n" + - " [pc: 131, line: 21]\n" + - " Local variable table:\n" + - " [pc: 0, pc: 134] local: this index: 0 type: X\n" + - " [pc: 2, pc: 134] local: a index: 1 type: int\n" + - " [pc: 4, pc: 100] local: warnings index: 2 type: java.lang.Object\n" + - " [pc: 6, pc: 100] local: contexts index: 3 type: java.lang.Object\n" + - " [pc: 63, pc: 73] local: npe index: 4 type: java.lang.NullPointerException\n" + - " [pc: 101, pc: 104] local: e index: 2 type: java.lang.Exception\n" + + " [pc: 70, line: 14]\n" + + " [pc: 92, line: 19]\n" + + " [pc: 95, line: 20]\n" + + " [pc: 117, line: 12]\n" + + " [pc: 118, line: 13]\n" + + " [pc: 120, line: 14]\n" + + " [pc: 142, line: 15]\n" + + " [pc: 145, line: 16]\n" + + " [pc: 146, line: 19]\n" + + " [pc: 149, line: 20]\n" + + " [pc: 171, line: 17]\n" + + " [pc: 172, line: 18]\n" + + " [pc: 174, line: 19]\n" + + " [pc: 177, line: 20]\n" + + " [pc: 199, line: 21]\n" + + " Local variable table:\n" + + " [pc: 0, pc: 202] local: this index: 0 type: X\n" + + " [pc: 2, pc: 202] local: a index: 1 type: int\n" + + " [pc: 4, pc: 145] local: warnings index: 2 type: java.lang.Object\n" + + " [pc: 6, pc: 145] local: contexts index: 3 type: java.lang.Object\n" + + " [pc: 63, pc: 118] local: npe index: 4 type: java.lang.NullPointerException\n" + + " [pc: 146, pc: 172] local: e index: 2 type: java.lang.Exception\n" + " [pc: 38, pc: 60] local: var index: 7 type: int\n" + - " [pc: 109, pc: 131] local: var index: 7 type: int\n"; + " [pc: 95, pc: 117] local: var index: 7 type: int\n" + + " [pc: 149, pc: 171] local: var index: 7 type: int\n" + + " [pc: 177, pc: 199] local: var index: 7 type: int\n"; } else { expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 4, Locals: 8\n" + @@ -2981,59 +3029,80 @@ expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 2, Locals: 7\n" + " public void save();\n" + - " 0 aconst_null\n" + - " 1 astore_1 [warnings]\n" + - " 2 aconst_null\n" + - " 3 astore_2 [contexts]\n" + - " 4 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 7 ldc [21]\n" + - " 9 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + - " 12 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 15 aload_1 [warnings]\n" + - " 16 invokevirtual java.io.PrintStream.print(java.lang.Object) : void [29]\n" + - " 19 iconst_0\n" + - " 20 istore 5 [var]\n" + - " 22 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 25 ldc [32]\n" + - " 27 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + - " 30 aconst_null\n" + - " 31 astore 6 [o]\n" + - " 33 aload 6 [o]\n" + - " 35 invokevirtual java.lang.Object.toString() : java.lang.String [34]\n" + - " 38 pop\n" + - " 39 return\n" + - " 40 astore_3 [npe]\n" + - " 41 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 44 ldc [38]\n" + - " 46 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + - " 49 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 52 aload_2 [contexts]\n" + - " 53 invokevirtual java.io.PrintStream.print(java.lang.Object) : void [29]\n" + - " 56 goto 19\n" + - " 59 astore_1 [e]\n" + - " 60 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 63 ldc [40]\n" + - " 65 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + - " 68 goto 19\n" + - " 71 astore 4\n" + - " 73 iconst_0\n" + - " 74 istore 5 [var]\n" + - " 76 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + - " 79 ldc [32]\n" + - " 81 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + - " 84 aconst_null\n" + - " 85 astore 6 [o]\n" + - " 87 aload 6 [o]\n" + - " 89 invokevirtual java.lang.Object.toString() : java.lang.String [34]\n" + - " 92 pop\n" + - " 93 aload 4\n" + - " 95 athrow\n" + + " 0 aconst_null\n" + + " 1 astore_1 [warnings]\n" + + " 2 aconst_null\n" + + " 3 astore_2 [contexts]\n" + + " 4 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 7 ldc [21]\n" + + " 9 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 12 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 15 aload_1 [warnings]\n" + + " 16 invokevirtual java.io.PrintStream.print(java.lang.Object) : void [29]\n" + + " 19 iconst_0\n" + + " 20 istore 5 [var]\n" + + " 22 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 25 ldc [32]\n" + + " 27 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 30 aconst_null\n" + + " 31 astore 6 [o]\n" + + " 33 aload 6 [o]\n" + + " 35 invokevirtual java.lang.Object.toString() : java.lang.String [34]\n" + + " 38 pop\n" + + " 39 return\n" + + " 40 astore_3 [npe]\n" + + " 41 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 44 ldc [38]\n" + + " 46 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 49 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 52 aload_2 [contexts]\n" + + " 53 invokevirtual java.io.PrintStream.print(java.lang.Object) : void [29]\n" + + " 56 iconst_0\n" + + " 57 istore 5 [var]\n" + + " 59 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 62 ldc [32]\n" + + " 64 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 67 aconst_null\n" + + " 68 astore 6 [o]\n" + + " 70 aload 6 [o]\n" + + " 72 invokevirtual java.lang.Object.toString() : java.lang.String [34]\n" + + " 75 pop\n" + + " 76 return\n" + + " 77 astore_1 [e]\n" + + " 78 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 81 ldc [40]\n" + + " 83 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 86 iconst_0\n" + + " 87 istore 5 [var]\n" + + " 89 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 92 ldc [32]\n" + + " 94 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 97 aconst_null\n" + + " 98 astore 6 [o]\n" + + " 100 aload 6 [o]\n" + + " 102 invokevirtual java.lang.Object.toString() : java.lang.String [34]\n" + + " 105 pop\n" + + " 106 return\n" + + " 107 astore 4\n" + + " 109 iconst_0\n" + + " 110 istore 5 [var]\n" + + " 112 getstatic java.lang.System.out : java.io.PrintStream [15]\n" + + " 115 ldc [32]\n" + + " 117 invokevirtual java.io.PrintStream.print(java.lang.String) : void [23]\n" + + " 120 aconst_null\n" + + " 121 astore 6 [o]\n" + + " 123 aload 6 [o]\n" + + " 125 invokevirtual java.lang.Object.toString() : java.lang.String [34]\n" + + " 128 pop\n" + + " 129 aload 4\n" + + " 131 athrow\n" + " Exception Table:\n" + " [pc: 4, pc: 19] -> 40 when : java.lang.NullPointerException\n" + - " [pc: 0, pc: 19] -> 59 when : java.lang.Exception\n" + - " [pc: 40, pc: 59] -> 59 when : java.lang.Exception\n" + - " [pc: 0, pc: 19] -> 71 when : any\n" + - " [pc: 40, pc: 71] -> 71 when : any\n" + + " [pc: 0, pc: 19] -> 77 when : java.lang.Exception\n" + + " [pc: 40, pc: 56] -> 77 when : java.lang.Exception\n" + + " [pc: 0, pc: 19] -> 107 when : any\n" + + " [pc: 40, pc: 56] -> 107 when : any\n" + + " [pc: 77, pc: 86] -> 107 when : any\n" + " Line numbers:\n" + " [pc: 0, line: 4]\n" + " [pc: 2, line: 5]\n" + @@ -3047,26 +3116,38 @@ " [pc: 40, line: 10]\n" + " [pc: 41, line: 11]\n" + " [pc: 49, line: 12]\n" + - " [pc: 56, line: 13]\n" + - " [pc: 59, line: 15]\n" + - " [pc: 60, line: 16]\n" + - " [pc: 68, line: 17]\n" + - " [pc: 71, line: 18]\n" + - " [pc: 73, line: 19]\n" + - " [pc: 76, line: 20]\n" + - " [pc: 84, line: 21]\n" + - " [pc: 87, line: 22]\n" + - " [pc: 93, line: 23]\n" + - " Local variable table:\n" + - " [pc: 0, pc: 96] local: this index: 0 type: X\n" + - " [pc: 2, pc: 59] local: warnings index: 1 type: java.lang.Object\n" + - " [pc: 4, pc: 59] local: contexts index: 2 type: java.lang.Object\n" + - " [pc: 41, pc: 59] local: npe index: 3 type: java.lang.NullPointerException\n" + - " [pc: 60, pc: 71] local: e index: 1 type: java.lang.Exception\n" + + " [pc: 56, line: 19]\n" + + " [pc: 59, line: 20]\n" + + " [pc: 67, line: 21]\n" + + " [pc: 70, line: 22]\n" + + " [pc: 76, line: 13]\n" + + " [pc: 77, line: 15]\n" + + " [pc: 78, line: 16]\n" + + " [pc: 86, line: 19]\n" + + " [pc: 89, line: 20]\n" + + " [pc: 97, line: 21]\n" + + " [pc: 100, line: 22]\n" + + " [pc: 106, line: 17]\n" + + " [pc: 107, line: 18]\n" + + " [pc: 109, line: 19]\n" + + " [pc: 112, line: 20]\n" + + " [pc: 120, line: 21]\n" + + " [pc: 123, line: 22]\n" + + " [pc: 129, line: 23]\n" + + " Local variable table:\n" + + " [pc: 0, pc: 132] local: this index: 0 type: X\n" + + " [pc: 2, pc: 77] local: warnings index: 1 type: java.lang.Object\n" + + " [pc: 4, pc: 77] local: contexts index: 2 type: java.lang.Object\n" + + " [pc: 41, pc: 77] local: npe index: 3 type: java.lang.NullPointerException\n" + + " [pc: 78, pc: 107] local: e index: 1 type: java.lang.Exception\n" + " [pc: 22, pc: 39] local: var index: 5 type: int\n" + - " [pc: 76, pc: 93] local: var index: 5 type: int\n" + + " [pc: 59, pc: 76] local: var index: 5 type: int\n" + + " [pc: 89, pc: 106] local: var index: 5 type: int\n" + + " [pc: 112, pc: 129] local: var index: 5 type: int\n" + " [pc: 33, pc: 39] local: o index: 6 type: java.lang.Object\n" + - " [pc: 87, pc: 93] local: o index: 6 type: java.lang.Object\n"; + " [pc: 70, pc: 76] local: o index: 6 type: java.lang.Object\n" + + " [pc: 100, pc: 106] local: o index: 6 type: java.lang.Object\n" + + " [pc: 123, pc: 129] local: o index: 6 type: java.lang.Object\n"; } else { expectedOutput = " // Method descriptor #6 ()V\n" + " // Stack: 2, Locals: 7\n" + @@ -5441,21 +5522,6 @@ " 22 ret 3\n" + " Exception Table:\n" + " [pc: 0, pc: 12] -> 13 when : any\n" - : new CompilerOptions(getCompilerOptions()).complianceLevel <= ClassFileConstants.JDK1_5 ? - " // Method descriptor #6 ()V\n" + - " // Stack: 3, Locals: 4\n" + - " void bar();\n" + - " 0 new X$MyClass [15]\n" + - " 3 dup\n" + - " 4 aload_0 [this]\n" + - " 5 invokespecial X$MyClass(X) [17]\n" + - " 8 astore_1 [myClass]\n" + - " 9 return\n" + - " 10 astore_3\n" + - " 11 aload_3\n" + - " 12 athrow\n" + - " Exception Table:\n" + - " [pc: 0, pc: 9] -> 10 when : any\n" : " // Method descriptor #6 ()V\n" + " // Stack: 3, Locals: 4\n" + @@ -5538,24 +5604,7 @@ " 23 ret 3\n" + " Exception Table:\n" + " [pc: 0, pc: 12] -> 14 when : any\n" - : new CompilerOptions(getCompilerOptions()).complianceLevel <= ClassFileConstants.JDK1_5 ? - " // Method descriptor #15 ()Ljava/lang/Object;\n" + - " // Stack: 3, Locals: 4\n" + - " java.lang.Object bar();\n" + - " 0 new X$MyClass [16]\n" + - " 3 dup\n" + - " 4 aload_0 [this]\n" + - " 5 invokespecial X$MyClass(X) [18]\n" + - " 8 astore_1 [myClass]\n" + - " 9 aconst_null\n" + - " 10 areturn\n" + - " 11 astore_3\n" + - " 12 aload_3\n" + - " 13 athrow\n" + - " Exception Table:\n" + - " [pc: 0, pc: 9] -> 11 when : any\n" - : - " // Method descriptor #15 ()Ljava/lang/Object;\n" + + : " // Method descriptor #15 ()Ljava/lang/Object;\n" + " // Stack: 3, Locals: 4\n" + " java.lang.Object bar();\n" + " 0 new X$MyClass [16]\n" + @@ -5653,6 +5702,37 @@ "Zork cannot be resolved to a type\n" + "----------\n"); } +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=248319 +public void test067() throws Exception { + this.runConformTest( + new String[] { + "X.java", + "public class X {\n" + + " public static void main(final String[] args) {\n" + + " System.out.println(new X().verifyError());\n" + + " }\n" + + " private Object verifyError() {\n" + + " try {\n" + + " if (someBooleanMethod()) {\n" + + " return null;\n" + + " }\n" + + " return getStuff();\n" + + " } catch (final Exception ex) {\n" + + " return null;\n" + + " } finally {\n" + + " while (someBooleanMethod()) {\n" + + " anyMethod();\n" + + " }\n" + + " }\n" + + " }\n" + + " private void anyMethod() { /*empty*/ }\n" + + " private Object getStuff() { return null; }\n" + + " private boolean someBooleanMethod() { return false; }\n" + + "}\n" + + "", + }, + "null"); +} public static Class testClass() { return TryStatementTest.class; }