8241519: javac crashes with wrong module-info.class in module path

If module-info.class is broken, mark the corresponding ModuleSymbol as erroneous.

Reviewed-by: jjg
This commit is contained in:
Jan Lahoda 2020-06-02 08:27:37 +02:00
parent 1adecc8e3a
commit 04ad75e788
2 changed files with 60 additions and 7 deletions

View file

@ -23,7 +23,7 @@
/*
* @test
* @bug 8154283 8167320 8171098 8172809 8173068 8173117 8176045 8177311
* @bug 8154283 8167320 8171098 8172809 8173068 8173117 8176045 8177311 8241519
* @summary tests for multi-module mode compilation
* @library /tools/lib
* @modules
@ -996,4 +996,45 @@ public class EdgeCases extends ModuleTestBase {
.writeAll();
}
@Test
public void testMisnamedModuleInfoClass(Path base) throws Exception {
Path src = base.resolve("src");
Path a = src.resolve("a");
tb.writeJavaFiles(a,
"module a {}");
Path b = src.resolve("b");
tb.writeJavaFiles(b,
"module b { uses com.example.c; }");
Path classes = base.resolve("classes");
tb.createDirectories(classes);
Path aClasses = classes.resolve("x");
tb.createDirectories(aClasses);
new JavacTask(tb)
.outdir(aClasses)
.files(findJavaFiles(a))
.run()
.writeAll();
Path bClasses = classes.resolve("b");
tb.createDirectories(bClasses);
List<String> log;
log = new JavacTask(tb)
.outdir(bClasses)
.options("-p", classes.toString(),
"-XDrawDiagnostics")
.files(findJavaFiles(b))
.run(Task.Expect.FAIL)
.writeAll()
.getOutputLines(Task.OutputKind.DIRECT);
List<String> expected = List.of("module-info.java:1:28: compiler.err.doesnt.exist: com.example",
"1 error");
if (!expected.equals(log))
throw new Exception("expected output not found: " + log);
}
}