diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java index 49dcbc162dc..4d96d4921cb 100644 --- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java +++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java @@ -30,7 +30,6 @@ import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.tests.util.Util; -import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; /** * Basic tests of {@link JavaCore#getGeneratedResources(IRegion, boolean)}. @@ -399,174 +398,6 @@ public void test005() throws JavaModelException { env.removeProject(projectPath); } - //https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 - public void test006() throws JavaModelException { - IPath projectPath = null; - try { - projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ - } catch (RuntimeException e) { - // no 1.5 VM or above is available - return; - } - env.addExternalJars(projectPath, Util.getJavaClassLibs()); - fullBuild(projectPath); - - // remove old package fragment root so that names don't collide - env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ - - IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ - env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ - - env.addClass(root, "a", "Anon", //$NON-NLS-1$ //$NON-NLS-2$ - "package a;\n" + - "\n" + - "public class Anon {\n" + - "\n" + - " Anon() {\n" + - " Object o1 = new Object() {\n" + - " public String toString() {\n" + - " return \"1\"; // a/Anon$3 in 1.5, a/Anon$11 in 1.4\n" + - " }\n" + - " };\n" + - " Object o2 = new Object() {\n" + - " public String toString() {\n" + - " return \"2\"; // a/Anon$4 in 1.5, a/Anon$12 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " void hello() {\n" + - " Object o3 = new Object() {\n" + - " public String toString() {\n" + - " return \"3\"; // a/Anon$5 in 1.5, a/Anon$13 in 1.4\n" + - " }\n" + - " };\n" + - " Object o4 = new Object() {\n" + - " public String toString() {\n" + - " return \"4\"; // a/Anon$6 in 1.5, a/Anon$14 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static void hello2() {\n" + - " Object o5 = new Object() {\n" + - " public String toString() {\n" + - " return \"5\"; // a/Anon$7 in 1.5, a/Anon$15 in 1.4\n" + - " }\n" + - " };\n" + - " Object o6 = new Object() {\n" + - " public String toString() {\n" + - " return \"6\"; // a/Anon$8 in 1.5, a/Anon$16 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static {\n" + - " Object o7 = new Object() {\n" + - " public String toString() {\n" + - " return \"7\"; // a/Anon$1 in 1.5, a/Anon$1 in 1.4\n" + - " }\n" + - " };\n" + - "\n" + - " Object o8 = new Object() {\n" + - " public String toString() {\n" + - " return \"8\"; // a/Anon$2 in 1.5, a/Anon$2 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static class Anon2 {\n" + - " // it\'s an object init block which has different prio as constructor!\n" + - " {\n" + - " Object o1 = new Object() {\n" + - " public String toString() {\n" + - " return \"1\"; // a/Anon$Anon2$1 in 1.5, a/Anon$3 in 1.4\n" + - " }\n" + - " };\n" + - " Object o2 = new Object() {\n" + - " public String toString() {\n" + - " return \"2\"; // a/Anon$Anon2$2 in 1.5, a/Anon$4 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " void hello() {\n" + - " Object o3 = new Object() {\n" + - " public String toString() {\n" + - " return \"3\"; // a/Anon$Anon2$5 in 1.5, a/Anon$7 in 1.4\n" + - " }\n" + - " };\n" + - " Object o4 = new Object() {\n" + - " public String toString() {\n" + - " return \"4\"; // a/Anon$Anon2$6 in 1.5, a/Anon$8 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static void hello2() {\n" + - " Object o5 = new Object() {\n" + - " public String toString() {\n" + - " return \"5\"; // a/Anon$Anon2$7 in 1.5, a/Anon$9 in 1.4\n" + - " }\n" + - " };\n" + - " Object o6 = new Object() {\n" + - " public String toString() {\n" + - " return \"6\"; // a/Anon$Anon2$8 in 1.5, a/Anon$10 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static {\n" + - " Object o7 = new Object() {\n" + - " public String toString() {\n" + - " return \"7\"; // a/Anon$Anon2$3 in 1.5, a/Anon$5 in 1.4\n" + - " }\n" + - " };\n" + - "\n" + - " Object o8 = new Object() {\n" + - " public String toString() {\n" + - " return \"8\"; // a/Anon$Anon2$4 in 1.5, a/Anon$6 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - " }\n" + - "}"); - - incrementalBuild(projectPath); - - IJavaProject project = env.getJavaProject(projectPath); - IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); - IPackageFragment packageFragment = root2.getPackageFragment("a");//$NON-NLS-1$ - ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Anon.java");//$NON-NLS-1$ - IRegion region = JavaCore.newRegion(); - region.add(compilationUnit); - IResource[] resources = JavaCore.getGeneratedResources(region, false); - assertEquals("Wrong size", 18, resources.length);//$NON-NLS-1$ - Arrays.sort(resources, COMPARATOR); - String actualOutput = getResourceOuput(resources); - String expectedOutput = - "/Project/bin/a/Anon.class\n" + - "/Project/bin/a/Anon$1.class\n" + - "/Project/bin/a/Anon$2.class\n" + - "/Project/bin/a/Anon$3.class\n" + - "/Project/bin/a/Anon$4.class\n" + - "/Project/bin/a/Anon$5.class\n" + - "/Project/bin/a/Anon$6.class\n" + - "/Project/bin/a/Anon$7.class\n" + - "/Project/bin/a/Anon$8.class\n" + - "/Project/bin/a/Anon$Anon2.class\n" + - "/Project/bin/a/Anon$Anon2$1.class\n" + - "/Project/bin/a/Anon$Anon2$2.class\n" + - "/Project/bin/a/Anon$Anon2$3.class\n" + - "/Project/bin/a/Anon$Anon2$4.class\n" + - "/Project/bin/a/Anon$Anon2$5.class\n" + - "/Project/bin/a/Anon$Anon2$6.class\n" + - "/Project/bin/a/Anon$Anon2$7.class\n" + - "/Project/bin/a/Anon$Anon2$8.class\n"; - assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); - env.removeProject(projectPath); - } - private String getResourceOuput(IResource[] resources) { StringWriter stringWriter = new StringWriter(); PrintWriter writer = new PrintWriter(stringWriter); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java index ce52848c5a9..5ce7bb57c94 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java @@ -23,8 +23,6 @@ import org.eclipse.jdt.core.ToolFactory; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.core.util.ClassFileBytesDisassembler; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; -import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings({ "unchecked", "rawtypes" }) public class ArrayTest extends AbstractRegressionTest { @@ -247,10 +245,6 @@ public void test010() { } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=148807 - variation public void test011() throws Exception { - if (new CompilerOptions(getCompilerOptions()).complianceLevel < ClassFileConstants.JDK1_5) { - // there is a bug on 1.4 VMs which make them fail verification (see 148807) - return; - } this.runConformTest( new String[] { "X.java", @@ -311,10 +305,6 @@ public void test011() throws Exception { } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=148807 - variation public void test012() throws Exception { - if (new CompilerOptions(getCompilerOptions()).complianceLevel < ClassFileConstants.JDK1_5) { - // there is a bug on 1.4 VMs which make them fail verification (see 148807) - return; - } this.runConformTest( new String[] { "X.java", @@ -407,12 +397,8 @@ public void test013() { // Check return type of array#clone() public void test014() throws Exception { Map optionsMap = getCompilerOptions(); - CompilerOptions options = new CompilerOptions(optionsMap); - if (options.complianceLevel > ClassFileConstants.JDK1_4) { - // check that #clone() return type is changed ONLY from -source 1.5 only (independant from compliance level) - optionsMap.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); - } - this.runNegativeTest( + // check that #clone() return type is changed ONLY from -source 1.5 only (independant from compliance level) + this.runConformTest( new String[] { "X.java", "public class X {\n" + @@ -422,16 +408,11 @@ public void test014() throws Exception { "}\n", }, "", - null, - true, optionsMap); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=247307 - variation //Check return type of array#clone() public void test015() throws Exception { - if ( new CompilerOptions(getCompilerOptions()).sourceLevel < ClassFileConstants.JDK1_5) { - return; - } this.runConformTest( new String[] { "X.java", @@ -464,18 +445,8 @@ public void test016() throws Exception { "\n", ClassFileBytesDisassembler.DETAILED); - String expectedOutput = new CompilerOptions(getCompilerOptions()).sourceLevel <= ClassFileConstants.JDK1_4 - ? " // Method descriptor #15 ([J)V\n" + - " // Stack: 1, Locals: 3\n" + - " void foo(long[] longs) throws java.lang.Exception;\n" + - " 0 aload_1 [longs]\n" + - " 1 invokevirtual java.lang.Object.clone() : java.lang.Object [19]\n" + - " 4 astore_2 [other]\n" + - " 5 return\n" + - " Line numbers:\n" + - " [pc: 0, line: 3]\n" + - " [pc: 5, line: 4]\n" - : " // Method descriptor #15 ([J)V\n" + + String expectedOutput = + " // Method descriptor #15 ([J)V\n" + " // Stack: 1, Locals: 3\n" + " void foo(long[] longs) throws java.lang.Exception;\n" + " 0 aload_1 [longs]\n" + @@ -500,11 +471,7 @@ public void test016() throws Exception { //Check constant pool declaring class of array#clone() public void test017() throws Exception { Map optionsMap = getCompilerOptions(); - CompilerOptions options = new CompilerOptions(optionsMap); - if (options.complianceLevel > ClassFileConstants.JDK1_4) { - // check that #clone() return type is changed ONLY from -source 1.5 only (independant from compliance level) - optionsMap.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); - } + // check that #clone() return type is changed ONLY from -source 1.5 only (independant from compliance level) this.runConformTest( new String[] { "X.java", @@ -551,8 +518,6 @@ public void test017() throws Exception { // https://bugs.eclipse.org/331872 - [compiler] NPE in Scope.createArrayType when attempting qualified access from type parameter public void test018() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) - return; this.runNegativeTest( new String[] { "X.java", 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 5520de40fdd..34785ea5d77 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 @@ -681,10 +681,10 @@ public void test012(){ " -13 -13.0 use 13 compliance (-source 13 -target 13)\n" + " -14 -14.0 use 14 compliance (-source 14 -target 14)\n" + getVersionOptions() + - " -source set source level: 1.8, 9 to "+ CompilerOptions.getLatestVersion() +"\n" + - " (or 8.0, 9.0, etc)\n" + - " -target set classfile target: 1.8, 9 to "+ CompilerOptions.getLatestVersion() +"\n" + - " (or 8.0, 9.0, etc)\n" + + " -source set source level: 1.8, 1.9, 10 to "+ CompilerOptions.getLatestVersion() +"\n" + + " (or 8, 8.0, etc)\n" + + " -target set classfile target: 1.8, 1.9, 10 to "+ CompilerOptions.getLatestVersion() +"\n" + + " (or 8, 8.0, etc)\n" + " --enable-preview enable support for preview features of the\n" + " latest Java release\n" + " \n" + @@ -11276,7 +11276,7 @@ public void testInferenceIn14Project(){ new File(lib1Path).delete(); } } -// https://bugs.eclipse.org/bugs/show_bug.cgi?id=328775 - Compiler fails to warn about invalid cast in 1.8 mode. +// https://bugs.eclipse.org/bugs/show_bug.cgi?id=328775 - Compiler fails to warn about invalid cast in 1.4 mode. public void testInferenceIn15Project(){ // ensure 1.8 complains too String currentWorkingDirectoryPath = System.getProperty("user.dir"); if (currentWorkingDirectoryPath == null) { @@ -11327,62 +11327,7 @@ public void testInferenceIn15Project(){ // ensure 1.8 complains too new File(lib1Path).delete(); } } -// https://bugs.eclipse.org/bugs/show_bug.cgi?id=186565 Test interaction between 1.8 and 1.8 class files -public void test186565(){ - String outputDirName = OUTPUT_DIR + File.separator + "d", - metaInfDirName = outputDirName + File.separator + "META-INF", - jarFileName = outputDirName + File.separator + "classB15.jar"; - this.runConformTest( - new String[] { - "d/B.java", - "public class B extends A {\n" + - "}", - "d/A.java", - "public class A {\n" + - "}", - }, - "\"" + outputDirName + "\"" - + " -1.8 -g -preserveAllLocals" - + " -d \"" + outputDirName + "\"", - "", - "", - true /* flush output directory */); - File outputDirectory = new File(outputDirName); - File metaInfDirectory = new File(metaInfDirName); - metaInfDirectory.mkdirs(); - try { - Util.createFile(metaInfDirName + File.separator + "MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Class-Path: ../d/classB15.jar\n"); - } catch (IOException e) { - fail("could not create manifest file"); - } - Util.delete(outputDirName + File.separator + "A.class"); - Util.delete(outputDirName + File.separator + "A.java"); - try { - Util.zip(outputDirectory, jarFileName); - } catch (IOException e) { - fail("could not create jar file"); - } - Util.delete(outputDirName + File.separator + "B.class"); - Util.delete(outputDirName + File.separator + "B.java"); - this.runConformTest( - new String[] { - "d/A.java", - "public class A {\n" + - "}", - "d/C.java", - "public class C extends B {\n" + - "}", - }, - "\"" + outputDirName + "\"" - + " -1.8 -g -preserveAllLocals" - + " -cp \"" + jarFileName + "\"" - + " -d \"" + OUTPUT_DIR + "\"", - "", - "", - false /* do not flush output directory */); -} + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=330347 - Test retention of bridge methods. public void testBridgeMethodRetention(){ String currentWorkingDirectoryPath = System.getProperty("user.dir"); @@ -13251,7 +13196,7 @@ public void testUnusedObjectAllocation() { } public void testBug573153() { String output = MAIN.bind("configure.source", "10"); - String template = "source level should be in '1.8','9'...'22' (or '5.0'..'22.0'): 10"; + String template = "source level should be in '1.8','9'...'22' (or '8.0'..'22.0'): 10"; template = template.replace("22", CompilerOptions.getLatestVersion()); assertEquals("configure.source is not updated", template, output); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileComparatorTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileComparatorTest.java index 13357c1f13f..b62d1b13a83 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileComparatorTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileComparatorTest.java @@ -368,27 +368,6 @@ public void test011() { removeTempClass("A011"); } } - public void test012() { - try { - String sourceA012 = - "public class A012 {\n" + - "public Class foo() {\n" + - "\treturn null;\n" + - "}\n" + - "}"; - compileAndDeploy(sourceA012, "A012"); - String sourceA012_2 = - "public class A012_2 {\n" + - "public Class foo() {\n" + - "\treturn A012_2.class;\n" + - "}\n" + - "}"; - compileAndDeploy(sourceA012_2, "A012_2"); - assertFalse(areStructurallyDifferent("A012", "A012_2", false, false)); - } finally { - removeTempClass("A012"); - } - } public void test013() { try { String sourceA013 = diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java index 9608a564357..dd0735a4f9d 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java @@ -1241,7 +1241,6 @@ class ProblemAttributes { expectedProblemAttributes.put("FeatureNotSupported", new ProblemAttributes(CategorizedProblem.CAT_COMPLIANCE)); expectedProblemAttributes.put("PreviewAPIUsed", new ProblemAttributes(CategorizedProblem.CAT_COMPLIANCE)); expectedProblemAttributes.put("JavaVersionNotSupported", new ProblemAttributes(CategorizedProblem.CAT_COMPLIANCE)); - expectedProblemAttributes.put("JavaVersionNotSupported", new ProblemAttributes(CategorizedProblem.CAT_COMPLIANCE)); expectedProblemAttributes.put("SwitchExpressionsYieldIncompatibleResultExpressionTypes", new ProblemAttributes(CategorizedProblem.CAT_TYPE)); expectedProblemAttributes.put("SwitchExpressionsYieldEmptySwitchBlock", new ProblemAttributes(CategorizedProblem.CAT_SYNTAX)); expectedProblemAttributes.put("SwitchExpressionsYieldNoResultExpression", new ProblemAttributes(CategorizedProblem.CAT_INTERNAL)); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java index 0668e7fee43..e904ba19652 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java @@ -12321,83 +12321,7 @@ public void test330264() { false, compilerOptions14); } -// https://bugs.eclipse.org/bugs/show_bug.cgi?id=331446 -public void test331446() { - Map compilerOptions15 = getCompilerOptions(); - compilerOptions15.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, CompilerOptions.getFirstSupportedJavaVersion()); - compilerOptions15.put(JavaCore.COMPILER_COMPLIANCE, CompilerOptions.getFirstSupportedJavaVersion()); - compilerOptions15.put(JavaCore.COMPILER_SOURCE, CompilerOptions.getFirstSupportedJavaVersion()); - this.runConformTest( - new String[] { - "Test.java", - "import java.util.Comparator;\n" + - "import java.util.List;\n" + - "\n" + - "public class Test {\n" + - " public static void assertEquals(String message,\n" + - " Comparator comparator, List expected, List actual) {\n" + - " if (expected.size() != actual.size()) {\n" + - " //failNotEquals(message, expected, actual);\n" + - " }\n" + - " for (int i = 0, l = expected.size(); i < l; i++) {\n" + - " assertEquals(message, comparator, expected.get(i), actual.get(i));\n" + - " }\n" + - " }\n" + - " public static void assertEquals(String message,\n" + - " Comparator comparator, T expected, T actual) {\n" + - " if (comparator.compare(expected, actual) == 0) {\n" + - " return;\n" + - " }\n" + - " //failNotEquals(message, expected, actual);\n" + - " }\n" + - "}\n" + - "" - }, - "", - null, - true, - null, - compilerOptions15, - null); - Map compilerOptions14 = getCompilerOptions(); - compilerOptions14.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, CompilerOptions.getFirstSupportedJavaVersion()); - compilerOptions14.put(JavaCore.COMPILER_COMPLIANCE, CompilerOptions.getFirstSupportedJavaVersion()); - compilerOptions14.put(JavaCore.COMPILER_SOURCE, CompilerOptions.getFirstSupportedJavaVersion()); - compilerOptions14.put(JavaCore.COMPILER_PB_UNNECESSARY_TYPE_CHECK, JavaCore.IGNORE); - compilerOptions14.put(JavaCore.COMPILER_PB_RAW_TYPE_REFERENCE, JavaCore.IGNORE); - this.runNegativeTest( - new String[] { - "X.java", - "import java.util.ArrayList;\n" + - "import java.util.Comparator;\n" + - "\n" + - "public class X {\n" + - " public static void testAmbiguity() {\n" + - " Comparator comparator = new Comparator() {\n" + - " \n" + - " public int compare(Object o1, Object o2) {\n" + - " return 0;\n" + - " }\n" + - " };\n" + - " Test.assertEquals(\"Test\", comparator, new ArrayList(), new ArrayList());\n" + - " }\n" + - "}\n" + - "", - }, - """ - ---------- - 1. ERROR in X.java (at line 12) - Test.assertEquals("Test", comparator, new ArrayList(), new ArrayList()); - ^^^^^^^^^^^^ - The method assertEquals(String, Comparator, List, List) is ambiguous for the type Test - ---------- - """, - null, - false, - null, - compilerOptions14); -} //https://bugs.eclipse.org/bugs/show_bug.cgi?id=331446 public void test331446a() { Map compilerOptions15 = getCompilerOptions();