Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 113314 Details for
Bug 248319
[compiler][1.5] Valid Java source produces class file that doesn't verify (VerifyError, javac compiles correctly)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Proposed fix + updated regression tests
patch_248319.txt (text/plain), 28.55 KB, created by
Olivier Thomann
on 2008-09-23 20:55:38 EDT
(
hide
)
Description:
Proposed fix + updated regression tests
Filename:
MIME Type:
Creator:
Olivier Thomann
Created:
2008-09-23 20:55:38 EDT
Size:
28.55 KB
patch
obsolete
>### 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 <String \"done\"> [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 <String \"done\"> [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 <String \"done\"> [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 <String \"done\"> [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 <String \"done\"> [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 <String \"done\"> [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 <String \"#inner -> \"> [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 <String \"#save -> \"> [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 <String \"#inner -> \"> [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 <String \"#save -> \"> [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 <String \"#inner -> \"> [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 <String \"#save -> \"> [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 <String \"#save -> \"> [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 <String \"[try]\"> [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 <String \"[finally]\"> [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 <String \"[npe]\"> [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 <String \"[e]\"> [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 <String \"[finally]\"> [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 <String \"[try]\"> [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 <String \"[finally]\"> [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 <String \"[npe]\"> [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 <String \"[finally]\"> [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 <String \"[e]\"> [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 <String \"[finally]\"> [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 <String \"[finally]\"> [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; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 248319
: 113314