Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesper Steen Møller2013-05-01 22:49:19 +0000
committerJesper Steen Møller2013-05-01 22:49:19 +0000
commit968a44abcc71c95b90a66b2bfce384792751e997 (patch)
treeb9d4ecd19d237ded357338489ae7ba3e7c93f3ae
parent97c93635fd2becc366b6b7ff4296a9b379902c15 (diff)
downloadeclipse.jdt.core-968a44abcc71c95b90a66b2bfce384792751e997.tar.gz
eclipse.jdt.core-968a44abcc71c95b90a66b2bfce384792751e997.tar.xz
eclipse.jdt.core-968a44abcc71c95b90a66b2bfce384792751e997.zip
unrunnable Java byte code
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java3
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatement17Test.java47
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java131
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java8
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java8
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java19
-rw-r--r--org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java5
7 files changed, 213 insertions, 8 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
index 5514ac6366..9c26719ae4 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
@@ -23,6 +23,8 @@
* bug 388281 - [compiler][null] inheritance of null annotations as an option
* bug 381443 - [compiler][null] Allow parameter widening from @NonNull to unannotated
* bug 383368 - [compiler][null] syntactic null analysis for field references
+ * Jesper Steen Moller - Contributions for
+ * bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;
@@ -1891,6 +1893,7 @@ public void test012b(){
" <option key=\"org.eclipse.jdt.core.compiler.annotation.nullable\" value=\"org.eclipse.jdt.annotation.Nullable\"/>\n" +
" <option key=\"org.eclipse.jdt.core.compiler.annotation.nullanalysis\" value=\"disabled\"/>\n" +
" <option key=\"org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode\" value=\"disabled\"/>\n" +
+ " <option key=\"org.eclipse.jdt.core.compiler.codegen.shareCommonFinallyBlocks\" value=\"disabled\"/>\n" +
" <option key=\"org.eclipse.jdt.core.compiler.codegen.targetPlatform\" value=\"1.5\"/>\n" +
" <option key=\"org.eclipse.jdt.core.compiler.codegen.unusedLocal\" value=\"optimize out\"/>\n" +
" <option key=\"org.eclipse.jdt.core.compiler.compliance\" value=\"1.5\"/>\n" +
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatement17Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatement17Test.java
index fafc9d33a7..9718a1f25a 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatement17Test.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatement17Test.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2011 IBM Corporation and others.
+ * Copyright (c) 2003, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Jesper Steen Moller - bug 404146 nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;
@@ -1216,6 +1217,50 @@ public void testBug391092() {
"No exception of type ClassNotFoundException[] can be thrown; an exception type must be a subclass of Throwable\n" +
"----------\n");
}
+
+//Bug 404146 - nested try-catch-finally-blocks leads to unrunnable Java byte code
+public void testBug404146() {
+ runConformTest(
+ new String[] {
+ "X.java",
+ "import java.io.IOException;\n" +
+ "import javax.naming.NamingException;\n" +
+
+ "\n" +
+ "public final class X {\n" +
+ "\n" +
+ " public static final void illegalStackMap() {\n" +
+ " try {\n" +
+ " try {\n" +
+ " Y.decoy1();\n" +
+ " } finally {\n" +
+ " try {\n" +
+ " Y.decoy2();\n" +
+ " } catch (final IOException e) {\n" +
+ " return;\n" +
+ " }\n" +
+ " }\n" +
+ " } finally {\n" +
+ " try {\n" +
+ " Y.decoy3();\n" +
+ " } catch (final NamingException e) {\n" +
+ " return;\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "}\n",
+ "Y.java",
+ "import java.io.IOException;\n" +
+ "import javax.naming.NamingException;\n" +
+ "public final class Y {\n" +
+ "\n" +
+ " public static void decoy1() {}\n" +
+ " public static void decoy2() throws IOException {}\n" +
+ " public static void decoy3() throws NamingException {}\n" +
+ "}\n"
+ });
+}
+
public static Class testClass() {
return TryStatement17Test.class;
}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java
index bcef02ab75..9e42561fa3 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2012 IBM Corporation and others.
+ * Copyright (c) 2003, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,6 +10,8 @@
* Stephan Herrmann - Contribution for
* bug 345305 - [compiler][null] Compiler misidentifies a case of "variable can only be null"
* bug 387612 - Unreachable catch block...exception is never thrown from the try
+ * Jesper Steen Moller - Contribution for
+ * bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;
@@ -36,6 +38,11 @@ public TryStatementTest(String name) {
public static Test suite() {
return buildAllCompliancesTestSuite(testClass());
}
+protected Map getCompilerOptions() {
+ Map compilerOptions = super.getCompilerOptions();
+ compilerOptions.put(CompilerOptions.OPTION_ShareCommonFinallyBlocks, CompilerOptions.ENABLED);
+ return compilerOptions;
+};
public void test001() {
this.runConformTest(new String[] {
"p/X.java",
@@ -2364,6 +2371,128 @@ public void test042() throws Exception {
assertEquals("Wrong contents", expectedOutput, result);
}
}
+
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=404146 - variation without sharing of inlined escaping finally-blocks
+public void test042_not_shared() throws Exception {
+ Map customOptions = getCompilerOptions();
+ customOptions.put(CompilerOptions.OPTION_ShareCommonFinallyBlocks, CompilerOptions.DISABLED);
+ customOptions.put(CompilerOptions.OPTION_InlineJsr, CompilerOptions.ENABLED);
+
+ this.runConformTest(
+ new String[] {
+ "X.java",
+ " public class X {\n" +
+ " public static void main(String[] args) {\n" +
+ " System.out.println(new X().foo(args));\n" +
+ " }\n" +
+ " String foo(String[] args) {\n" +
+ " try {\n" +
+ " if (args == null) return \"KO\";\n" +
+ " switch(args.length) {\n" +
+ " case 0:\n" +
+ " return \"OK\";\n" +
+ " case 1:\n" +
+ " return \"KO\";\n" +
+ " case 3:\n" +
+ " return \"OK\";\n" +
+ " default:\n" +
+ " return \"KO\";\n" +
+ " }\n" +
+ " } finally {\n" +
+ " System.out.print(\"FINALLY:\");\n" +
+ " }\n" +
+ " }\n" +
+ "}\n",
+ },
+ "FINALLY:OK",
+ null,
+ true,
+ null,
+ customOptions,
+ null);
+
+ String expectedOutput =
+ " // Method descriptor #26 ([Ljava/lang/String;)Ljava/lang/String;\n" +
+ " // Stack: 2, Locals: 3\n" +
+ " java.lang.String foo(java.lang.String[] args);\n" +
+ " 0 aload_1 [args]\n" +
+ " 1 ifnonnull 15\n" +
+ " 4 getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
+ " 7 ldc <String \"FINALLY:\"> [35]\n" +
+ " 9 invokevirtual java.io.PrintStream.print(java.lang.String) : void [37]\n" +
+ " 12 ldc <String \"KO\"> [40]\n" +
+ " 14 areturn\n" +
+ " 15 aload_1 [args]\n" +
+ " 16 arraylength\n" +
+ " 17 tableswitch default: 81\n" +
+ " case 0: 48\n" +
+ " case 1: 59\n" +
+ " case 2: 81\n" +
+ " case 3: 70\n" +
+ " 48 getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
+ " 51 ldc <String \"FINALLY:\"> [35]\n" +
+ " 53 invokevirtual java.io.PrintStream.print(java.lang.String) : void [37]\n" +
+ " 56 ldc <String \"OK\"> [42]\n" +
+ " 58 areturn\n" +
+ " 59 getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
+ " 62 ldc <String \"FINALLY:\"> [35]\n" +
+ " 64 invokevirtual java.io.PrintStream.print(java.lang.String) : void [37]\n" +
+ " 67 ldc <String \"KO\"> [40]\n" +
+ " 69 areturn\n" +
+ " 70 getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
+ " 73 ldc <String \"FINALLY:\"> [35]\n" +
+ " 75 invokevirtual java.io.PrintStream.print(java.lang.String) : void [37]\n" +
+ " 78 ldc <String \"OK\"> [42]\n" +
+ " 80 areturn\n" +
+ " 81 getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
+ " 84 ldc <String \"FINALLY:\"> [35]\n" +
+ " 86 invokevirtual java.io.PrintStream.print(java.lang.String) : void [37]\n" +
+ " 89 ldc <String \"KO\"> [40]\n" +
+ " 91 areturn\n" +
+ " 92 astore_2\n" +
+ " 93 getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
+ " 96 ldc <String \"FINALLY:\"> [35]\n" +
+ " 98 invokevirtual java.io.PrintStream.print(java.lang.String) : void [37]\n" +
+ " 101 aload_2\n" +
+ " 102 athrow\n" +
+ " Exception Table:\n" +
+ " [pc: 0, pc: 4] -> 92 when : any\n" +
+ " [pc: 15, pc: 48] -> 92 when : any\n" +
+ " Line numbers:\n" +
+ " [pc: 0, line: 7]\n" +
+ " [pc: 4, line: 19]\n" +
+ " [pc: 12, line: 7]\n" +
+ " [pc: 15, line: 8]\n" +
+ " [pc: 48, line: 19]\n" +
+ " [pc: 56, line: 10]\n" +
+ " [pc: 59, line: 19]\n" +
+ " [pc: 67, line: 12]\n" +
+ " [pc: 70, line: 19]\n" +
+ " [pc: 78, line: 14]\n" +
+ " [pc: 81, line: 19]\n" +
+ " [pc: 89, line: 16]\n" +
+ " [pc: 92, line: 18]\n" +
+ " [pc: 93, line: 19]\n" +
+ " [pc: 101, line: 20]\n" +
+ " Local variable table:\n" +
+ " [pc: 0, pc: 103] local: this index: 0 type: X\n" +
+ " [pc: 0, pc: 103] local: args index: 1 type: java.lang.String[]\n";
+
+ File f = new File(OUTPUT_DIR + File.separator + "X.class");
+ byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(f);
+ ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
+ String result = disassembler.disassemble(classFileBytes, "\n", ClassFileBytesDisassembler.DETAILED);
+ int index = result.indexOf(expectedOutput);
+ if (index == -1 || expectedOutput.length() == 0) {
+ System.out.println(Util.displayString(result, 3));
+ }
+ if (index == -1) {
+ assertEquals("Wrong contents", expectedOutput, result);
+ }
+}
+
+
+
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=128705 - variation
public void test043() throws Exception {
this.runConformTest(
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java
index 27414e69bf..73c220d8f7 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2012 IBM Corporation and others.
+ * Copyright (c) 2005, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Jesper Steen Moller - Contributions for
+ * bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;
@@ -3909,6 +3911,8 @@ public void test014() {
"");
}
public void test015() {
+ Map settings = getCompilerOptions();
+ settings.put(CompilerOptions.OPTION_ShareCommonFinallyBlocks, CompilerOptions.ENABLED);
runConformTest(
true,
new String[] {
@@ -11934,6 +11938,8 @@ public void test015() {
" }\n" +
"}"},
null,
+ settings,
+ null,
"Enter finally block\n" +
"Inside finally block\n" +
"Leave finally block\n" +
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java
index 85d26abfd4..8bfdd674d6 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java
@@ -18,7 +18,9 @@
* bug 401088 - [compiler][null] Wrong warning "Redundant null check" inside nested try statement
* bug 401092 - [compiler][null] Wrong warning "Redundant null check" in outer catch of nested try
* bug 402993 - [null] Follow up of bug 401088: Missing warning about redundant null check
- * bug 384380 - False positive on a « Potential null pointer access » after a continue
+ * bug 384380 - False positive on a ?? Potential null pointer access ?? after a continue
+ * Jesper Steen Moller - Contributions for
+ * bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.internal.compiler.ast;
@@ -27,6 +29,7 @@ import org.eclipse.jdt.internal.compiler.ASTVisitor;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.codegen.*;
import org.eclipse.jdt.internal.compiler.flow.*;
+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import org.eclipse.jdt.internal.compiler.impl.Constant;
import org.eclipse.jdt.internal.compiler.lookup.*;
@@ -888,7 +891,8 @@ public boolean generateSubRoutineInvocation(BlockScope currentScope, CodeStream
return false;
}
// optimize subroutine invocation sequences, using the targetLocation (if any)
- if (targetLocation != null) {
+ CompilerOptions options = this.scope.compilerOptions();
+ if (options.shareCommonFinallyBlocks && targetLocation != null) {
boolean reuseTargetLocation = true;
if (this.reusableJSRTargetsCount > 0) {
nextReusableTarget: for (int i = 0, count = this.reusableJSRTargetsCount; i < count; i++) {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
index 667e1806b8..7e71149474 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,6 +19,8 @@
* bug 388281 - [compiler][null] inheritance of null annotations as an option
* bug 381443 - [compiler][null] Allow parameter widening from @NonNull to unannotated
* bug 383368 - [compiler][null] syntactic null analysis for field references
+ * Jesper Steen Moller - Contributions for
+ * bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.internal.compiler.impl;
@@ -112,6 +114,7 @@ public class CompilerOptions {
public static final String OPTION_TaskPriorities = "org.eclipse.jdt.core.compiler.taskPriorities"; //$NON-NLS-1$
public static final String OPTION_TaskCaseSensitive = "org.eclipse.jdt.core.compiler.taskCaseSensitive"; //$NON-NLS-1$
public static final String OPTION_InlineJsr = "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"; //$NON-NLS-1$
+ public static final String OPTION_ShareCommonFinallyBlocks = "org.eclipse.jdt.core.compiler.codegen.shareCommonFinallyBlocks"; //$NON-NLS-1$
public static final String OPTION_ReportNullReference = "org.eclipse.jdt.core.compiler.problem.nullReference"; //$NON-NLS-1$
public static final String OPTION_ReportPotentialNullReference = "org.eclipse.jdt.core.compiler.problem.potentialNullReference"; //$NON-NLS-1$
public static final String OPTION_ReportRedundantNullCheck = "org.eclipse.jdt.core.compiler.problem.redundantNullCheck"; //$NON-NLS-1$
@@ -379,6 +382,8 @@ public class CompilerOptions {
public boolean reportMissingJavadocCommentsOverriding;
/** Indicate whether the JSR bytecode should be inlined to avoid its presence in classfile */
public boolean inlineJsrBytecode;
+ /** Indicate whether common escaping finally blocks should be shared */
+ public boolean shareCommonFinallyBlocks;
/** Indicate if @SuppressWarning annotations are activated */
public boolean suppressWarnings;
/** Indicate if @SuppressWarning annotations should also suppress optional errors */
@@ -1093,6 +1098,7 @@ public class CompilerOptions {
optionsMap.put(OPTION_ReportSpecialParameterHidingField, this.reportSpecialParameterHidingField ? ENABLED : DISABLED);
optionsMap.put(OPTION_MaxProblemPerUnit, String.valueOf(this.maxProblemsPerUnit));
optionsMap.put(OPTION_InlineJsr, this.inlineJsrBytecode ? ENABLED : DISABLED);
+ optionsMap.put(OPTION_ShareCommonFinallyBlocks, this.shareCommonFinallyBlocks ? ENABLED : DISABLED);
optionsMap.put(OPTION_ReportNullReference, getSeverityString(NullReference));
optionsMap.put(OPTION_ReportPotentialNullReference, getSeverityString(PotentialNullReference));
optionsMap.put(OPTION_ReportRedundantNullCheck, getSeverityString(RedundantNullCheck));
@@ -1242,8 +1248,9 @@ public class CompilerOptions {
this.reportMissingJavadocCommentsVisibility = ClassFileConstants.AccPublic;
this.reportMissingJavadocCommentsOverriding = false;
- // JSR bytecode inlining
+ // JSR bytecode inlining and sharing
this.inlineJsrBytecode = false;
+ this.shareCommonFinallyBlocks = false;
// javadoc comment support
this.docCommentSupport = false;
@@ -1482,6 +1489,13 @@ public class CompilerOptions {
}
}
}
+ if ((optionValue = optionsMap.get(OPTION_ShareCommonFinallyBlocks)) != null) {
+ if (ENABLED.equals(optionValue)) {
+ this.shareCommonFinallyBlocks = true;
+ } else if (DISABLED.equals(optionValue)) {
+ this.shareCommonFinallyBlocks = false;
+ }
+ }
if ((optionValue = optionsMap.get(OPTION_SuppressWarnings)) != null) {
if (ENABLED.equals(optionValue)) {
this.suppressWarnings = true;
@@ -1807,6 +1821,7 @@ public class CompilerOptions {
buf.append("\n\t- report unused parameter include doc comment reference : ").append(this.reportUnusedParameterIncludeDocCommentReference ? ENABLED : DISABLED); //$NON-NLS-1$
buf.append("\n\t- report constructor/setter parameter hiding existing field : ").append(this.reportSpecialParameterHidingField ? ENABLED : DISABLED); //$NON-NLS-1$
buf.append("\n\t- inline JSR bytecode : ").append(this.inlineJsrBytecode ? ENABLED : DISABLED); //$NON-NLS-1$
+ buf.append("\n\t- share common finally blocks : ").append(this.shareCommonFinallyBlocks ? ENABLED : DISABLED); //$NON-NLS-1$
buf.append("\n\t- report unavoidable generic type problems : ").append(this.reportUnavoidableGenericTypeProblems ? ENABLED : DISABLED); //$NON-NLS-1$
buf.append("\n\t- unsafe type operation: ").append(getSeverityString(UncheckedTypeOperation)); //$NON-NLS-1$
buf.append("\n\t- unsafe raw type: ").append(getSeverityString(RawTypeReference)); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
index 62afdf5f0c..69293d9967 100644
--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Jesper Steen Moller - Contributions for
+ * bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
*******************************************************************************/
package org.eclipse.jdt.internal.formatter;
@@ -339,6 +341,7 @@ public class DefaultCodeFormatter extends CodeFormatter {
optionsMap.put(CompilerOptions.OPTION_ReportUnavoidableGenericTypeProblems, CompilerOptions.ENABLED);
optionsMap.put(CompilerOptions.OPTION_MaxProblemPerUnit, String.valueOf(100));
optionsMap.put(CompilerOptions.OPTION_InlineJsr, CompilerOptions.DISABLED);
+ optionsMap.put(CompilerOptions.OPTION_ShareCommonFinallyBlocks, CompilerOptions.DISABLED);
optionsMap.put(CompilerOptions.OPTION_ReportMethodCanBeStatic, CompilerOptions.IGNORE);
optionsMap.put(CompilerOptions.OPTION_ReportMethodCanBePotentiallyStatic, CompilerOptions.IGNORE);
optionsMap.put(CompilerOptions.OPTION_ReportUnusedTypeParameter, CompilerOptions.IGNORE);

Back to the top