langtools/test/tools/javac/modules/ConvenientAccessErrorsTest.java
changeset 43141 7ea6578a9110
parent 43138 680d378b9d64
child 43272 421ae1e38d2d
equal deleted inserted replaced
43140:1e40241dc2d4 43141:7ea6578a9110
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 
    23 
    24 /*
    24 /*
    25  * @test
    25  * @test
       
    26  * @bug 8169197 8172668
    26  * @summary Check convenient errors are produced for inaccessible classes.
    27  * @summary Check convenient errors are produced for inaccessible classes.
    27  * @library /tools/lib
    28  * @library /tools/lib
    28  * @modules jdk.compiler/com.sun.tools.javac.api
    29  * @modules jdk.compiler/com.sun.tools.javac.api
    29  *          jdk.compiler/com.sun.tools.javac.main
    30  *          jdk.compiler/com.sun.tools.javac.main
    30  * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase
    31  * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase
   510                 .files(findJavaFiles(src))
   511                 .files(findJavaFiles(src))
   511                 .run()
   512                 .run()
   512                 .writeAll();
   513                 .writeAll();
   513     }
   514     }
   514 
   515 
       
   516     @Test
       
   517     public void testUnresolvableInImport(Path base) throws Exception {
       
   518         Path src = base.resolve("src");
       
   519         Path src_m1 = src.resolve("m1x");
       
   520         tb.writeJavaFiles(src_m1,
       
   521                           "module m1x { }",
       
   522                           "package api; import can.not.resolve; public class Api { }");
       
   523         Path classes = base.resolve("classes");
       
   524         tb.createDirectories(classes);
       
   525 
       
   526         List<String> log = new JavacTask(tb)
       
   527                 .options("-XDrawDiagnostics",
       
   528                          "--module-source-path", src.toString())
       
   529                 .outdir(classes)
       
   530                 .files(findJavaFiles(src))
       
   531                 .run(Task.Expect.FAIL)
       
   532                 .writeAll()
       
   533                 .getOutputLines(Task.OutputKind.DIRECT);
       
   534 
       
   535         List<String> expected = Arrays.asList(
       
   536                 "Api.java:1:28: compiler.err.doesnt.exist: can.not",
       
   537                 "1 error");
       
   538 
       
   539         if (!expected.equals(log))
       
   540             throw new Exception("expected output not found; actual: " + log);
       
   541     }
       
   542 
       
   543     @Test
       
   544     public void testMissingKnownClass(Path base) throws Exception {
       
   545         Path src = base.resolve("src");
       
   546         Path src_m1 = src.resolve("m1x");
       
   547         tb.writeJavaFiles(src_m1,
       
   548                           "module m1x { exports api; }",
       
   549                           "package api; public class Base { }",
       
   550                           "package api; public class Sub extends Base { }");
       
   551         Path classes = base.resolve("classes");
       
   552         tb.createDirectories(classes);
       
   553         Path m1xClasses = classes.resolve("m1x");
       
   554         tb.createDirectories(m1xClasses);
       
   555 
       
   556         new JavacTask(tb)
       
   557                 .options("-XDrawDiagnostics")
       
   558                 .outdir(m1xClasses)
       
   559                 .files(findJavaFiles(src_m1))
       
   560                 .run(Task.Expect.SUCCESS)
       
   561                 .writeAll();
       
   562 
       
   563         Files.delete(m1xClasses.resolve("api").resolve("Base.class"));
       
   564 
       
   565         Path src_m2 = src.resolve("m2x");
       
   566         tb.writeJavaFiles(src_m2,
       
   567                           "module m2x { requires m1x; }",
       
   568                           "package test;\n" +
       
   569                           "import api.Sub;\n" +
       
   570                           "import api.Base;\n" +
       
   571                           "public class Test {\n" +
       
   572                           "    Sub a2;\n" +
       
   573                           "    Base a;\n" +
       
   574                           "}\n");
       
   575         Path m2xClasses = classes.resolve("m2x");
       
   576         tb.createDirectories(m2xClasses);
       
   577         List<String> log = new JavacTask(tb)
       
   578                 .options("-XDrawDiagnostics",
       
   579                          "--module-path", classes.toString(),
       
   580                          "-XDdev")
       
   581                 .outdir(m2xClasses)
       
   582                 .files(findJavaFiles(src_m2))
       
   583                 .run(Task.Expect.FAIL)
       
   584                 .writeAll()
       
   585                 .getOutputLines(Task.OutputKind.DIRECT);
       
   586 
       
   587         List<String> expected = Arrays.asList(
       
   588                 "Test.java:3:11: compiler.err.cant.resolve.location: kindname.class, Base, , , (compiler.misc.location: kindname.package, api, null)",
       
   589                 "Test.java:6:5: compiler.err.cant.resolve.location: kindname.class, Base, , , (compiler.misc.location: kindname.class, test.Test, null)",
       
   590                 "2 errors");
       
   591 
       
   592         if (!expected.equals(log))
       
   593             throw new Exception("expected output not found; actual: " + log);
       
   594     }
       
   595 
   515 }
   596 }