diff options
author | Jesper Steen Møller | 2013-05-01 22:49:19 +0000 |
---|---|---|
committer | Jesper Steen Møller | 2013-05-01 22:49:19 +0000 |
commit | 968a44abcc71c95b90a66b2bfce384792751e997 (patch) | |
tree | b9d4ecd19d237ded357338489ae7ba3e7c93f3ae | |
parent | 97c93635fd2becc366b6b7ff4296a9b379902c15 (diff) | |
download | eclipse.jdt.core-968a44abcc71c95b90a66b2bfce384792751e997.tar.gz eclipse.jdt.core-968a44abcc71c95b90a66b2bfce384792751e997.tar.xz eclipse.jdt.core-968a44abcc71c95b90a66b2bfce384792751e997.zip |
[404146] [1.7][compiler] nested try-catch-finally-blocks leads toI20130507-2000I20130507-1100I20130507-0000I20130506-2000I20130505-2000I20130504-1500I20130503-2000I20130502-0800I20130501-2000
unrunnable Java byte code
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); |