diff options
Diffstat (limited to 'org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java')
-rw-r--r-- | org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java index 9e79e516f9..5575b3a39f 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/dom/StandAloneASTParserTest.java @@ -25,6 +25,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; +import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -88,6 +89,13 @@ public class StandAloneASTParserTest extends AbstractRegressionTest { parser.setUnitName(unitName); return parser.createAST(null); } + protected File createFile(File dir, String fileName, String contents) throws IOException { + File file = new File(dir, fileName); + try (Writer writer = new BufferedWriter(new FileWriter(file))) { + writer.write(contents); + } + return file; + } public void testBug529654_001() { String contents = "module m {\n" + @@ -1829,4 +1837,52 @@ public class StandAloneASTParserTest extends AbstractRegressionTest { YieldStatement yieldStatement = (YieldStatement) ((Block)se.statements().get(1)).statements().get(0); assertNotNull("Expression null", yieldStatement.getExpression()); } + public void testBug558517() throws IOException { + File f1 = null, f2 = null, packDir = null; + try { + File rootDir = new File(System.getProperty("java.io.tmpdir")); + packDir = new File(rootDir, "P/src/x"); + packDir.mkdirs(); + + String fileName1 = "EnsureImpl$1.java"; + String fileName2 = "C9947f.java"; + f1 = createFile( + packDir, fileName1, + "package x;\n" + + "\n" + + "class EnsureImpl$1 {\n" + + "}\n"); + f2 = createFile( + packDir, fileName2, + "package x;\n" + + "public final class C9947f {\n" + + " public C9947f() {\n" + + " try {\n" + + " new x.EnsureImpl$1();\n" + + " } catch (Throwable unused) {\n" + + " }\n" + + " }\n" + + "}\n"); + ASTParser parser = ASTParser.newParser(AST_JLS_LATEST); + parser.setResolveBindings(true); + Map<String, String> options = new HashMap<>(); + JavaCore.setComplianceOptions(JavaCore.VERSION_1_8, options); + parser.setCompilerOptions(options ); + parser.setEnvironment(null, + new String[] { rootDir + "/P/src" }, + null, + true); + parser.createASTs(new String[] { packDir + "/" + fileName1, packDir + "/" + fileName2 }, + null, + new String[] { "Lx/C9947f;" }, + new FileASTRequestor() { + }, + null); + // just ensure the above doesn't throw NPE + } finally { + f1.delete(); + f2.delete(); + packDir.delete(); + } + } }
\ No newline at end of file |