# HG changeset patch # User alanb # Date 1491559118 -3600 # Node ID 0bfc30a4b90535b7e45132e93391ad7b0d9a20ec # Parent 0753a201e0d70dda936ee57242563d64b06c50b8# Parent 245bb4e6f983d8e3dab0dea292c6a0f5579c88e5 Merge diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/make/tools/crules/CodingRulesAnalyzerPlugin.java --- a/langtools/make/tools/crules/CodingRulesAnalyzerPlugin.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/make/tools/crules/CodingRulesAnalyzerPlugin.java Fri Apr 07 10:58:38 2017 +0100 @@ -23,8 +23,6 @@ package crules; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -76,7 +74,7 @@ private void addExports(String moduleName, String... packageNames) { for (String packageName : packageNames) { try { - Layer layer = Layer.boot(); + ModuleLayer layer = ModuleLayer.boot(); Optional m = layer.findModule(moduleName); if (!m.isPresent()) throw new Error("module not found: " + moduleName); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java --- a/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java Fri Apr 07 10:58:38 2017 +0100 @@ -106,7 +106,7 @@ static { Class c = null; try { - c = Class.forName("java.lang.reflect.Module"); + c = Class.forName("java.lang.Module"); } catch (Throwable t) { } useLegacy = (c == null); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java Fri Apr 07 10:58:38 2017 +0100 @@ -1240,7 +1240,7 @@ case ALL_SYSTEM: modules = new HashSet<>(syms.getAllModules()) .stream() - .filter(systemModulePred.and(observablePred).and(noIncubatorPred)); + .filter(systemModulePred.and(observablePred)); break; case ALL_MODULE_PATH: modules = new HashSet<>(syms.getAllModules()) @@ -1265,6 +1265,15 @@ result.add(syms.unnamedModule); + boolean hasAutomatic = result.stream().anyMatch(IS_AUTOMATIC); + + if (hasAutomatic) { + syms.getAllModules() + .stream() + .filter(IS_AUTOMATIC) + .forEach(result::add); + } + String incubatingModules = result.stream() .filter(msym -> msym.resolutionFlags.contains(ModuleResolutionFlags.WARN_INCUBATING)) .map(msym -> msym.name.toString()) @@ -1282,6 +1291,9 @@ rootModules.forEach(m -> m.version = version); } } + //where: + private static final Predicate IS_AUTOMATIC = + m -> (m.flags_field & Flags.AUTOMATIC_MODULE) != 0; public boolean isInModuleGraph(ModuleSymbol msym) { return allModules == null || allModules.contains(msym); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Fri Apr 07 10:58:38 2017 +0100 @@ -1282,8 +1282,7 @@ } // finally clean up the module name - mn = mn.replaceAll("(\\.|\\d)*$", "") // remove trailing version - .replaceAll("[^A-Za-z0-9]", ".") // replace non-alphanumeric + mn = mn.replaceAll("[^A-Za-z0-9]", ".") // replace non-alphanumeric .replaceAll("(\\.)(\\1)+", ".") // collapse repeating dots .replaceAll("^\\.", "") // drop leading dots .replaceAll("\\.$", ""); // drop trailing dots diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java Fri Apr 07 10:58:38 2017 +0100 @@ -183,7 +183,7 @@ } /** - * Wrapper class for java.lang.reflect.Module. To materialize a handle use the static factory + * Wrapper class for java.lang.Module. To materialize a handle use the static factory * methods Module#getModule(Class) or Module#getUnnamedModule(ClassLoader). */ public static class Module { @@ -236,9 +236,9 @@ } // ----------------------------------------------------------------------------------------- - // on java.lang.reflect.Module + // on java.lang.Module private static Method addExportsMethod = null; - // on java.lang.reflect.Module + // on java.lang.Module private static Method addUsesMethod = null; // on java.lang.Class private static Method getModuleMethod; @@ -248,7 +248,7 @@ private static void init() { if (addExportsMethod == null) { try { - Class moduleClass = Class.forName("java.lang.reflect.Module", false, null); + Class moduleClass = Class.forName("java.lang.Module", false, null); addUsesMethod = moduleClass.getDeclaredMethod("addUses", new Class[] { Class.class }); addExportsMethod = moduleClass.getDeclaredMethod("addExports", new Class[] { String.class, moduleClass }); @@ -318,7 +318,7 @@ } /** - * Wrapper class for java.lang.module.Layer. + * Wrapper class for java.lang.ModuleLayer. */ public static final class Layer { private final Object theRealLayer; @@ -372,7 +372,7 @@ private static void init() { if (layerClass == null) { try { - layerClass = Class.forName("java.lang.reflect.Layer", false, null); + layerClass = Class.forName("java.lang.ModuleLayer", false, null); bootMethod = layerClass.getDeclaredMethod("boot"); defineModulesWithOneLoaderMethod = layerClass.getDeclaredMethod("defineModulesWithOneLoader", Configuration.getConfigurationClass(), diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java --- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java Fri Apr 07 10:58:38 2017 +0100 @@ -292,7 +292,7 @@ Method getModuleMethod = Class.class.getDeclaredMethod("getModule"); Object thisModule = getModuleMethod.invoke(getClass()); - Class moduleClass = Class.forName("java.lang.reflect.Module"); + Class moduleClass = Class.forName("java.lang.Module"); Method addExportsMethod = moduleClass.getDeclaredMethod("addExports", String.class, moduleClass); Method getUnnamedModuleMethod = ClassLoader.class.getDeclaredMethod("getUnnamedModule"); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocletInvoker.java --- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocletInvoker.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocletInvoker.java Fri Apr 07 10:58:38 2017 +0100 @@ -379,7 +379,7 @@ Method getModuleMethod = Class.class.getDeclaredMethod("getModule"); Object thisModule = getModuleMethod.invoke(getClass()); - Class moduleClass = Class.forName("java.lang.reflect.Module"); + Class moduleClass = Class.forName("java.lang.Module"); Method addExportsMethod = moduleClass.getDeclaredMethod("addExports", String.class, moduleClass); Method getUnnamedModuleMethod = ClassLoader.class.getDeclaredMethod("getUnnamedModule"); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/TEST.ROOT --- a/langtools/test/TEST.ROOT Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/TEST.ROOT Fri Apr 07 10:58:38 2017 +0100 @@ -14,8 +14,8 @@ # Group definitions groups=TEST.groups -# Tests using jtreg 4.2 b05 features -requiredVersion=4.2 b05 +# Tests using jtreg 4.2 b07 features +requiredVersion=4.2 b07 # Use new module options useNewOptions=true diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/com/sun/javadoc/testCustomTag/taglets/CustomTag.java --- a/langtools/test/com/sun/javadoc/testCustomTag/taglets/CustomTag.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/com/sun/javadoc/testCustomTag/taglets/CustomTag.java Fri Apr 07 10:58:38 2017 +0100 @@ -23,8 +23,6 @@ package taglets; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import com.sun.javadoc.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/BoldTaglet.java --- a/langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/BoldTaglet.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/BoldTaglet.java Fri Apr 07 10:58:38 2017 +0100 @@ -23,8 +23,6 @@ package testtaglets; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import com.sun.javadoc.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/GreenTaglet.java --- a/langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/GreenTaglet.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/GreenTaglet.java Fri Apr 07 10:58:38 2017 +0100 @@ -23,8 +23,6 @@ package testtaglets; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import com.sun.javadoc.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/UnderlineTaglet.java --- a/langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/UnderlineTaglet.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/com/sun/javadoc/testNestedInlineTag/testtaglets/UnderlineTaglet.java Fri Apr 07 10:58:38 2017 +0100 @@ -23,8 +23,6 @@ package testtaglets; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import com.sun.javadoc.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java --- a/langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java Fri Apr 07 10:58:38 2017 +0100 @@ -23,8 +23,6 @@ package taglets; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import com.sun.javadoc.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/jdk/javadoc/tool/CheckResourceKeys.java --- a/langtools/test/jdk/javadoc/tool/CheckResourceKeys.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/jdk/javadoc/tool/CheckResourceKeys.java Fri Apr 07 10:58:38 2017 +0100 @@ -33,8 +33,6 @@ */ import java.io.*; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import javax.tools.*; import com.sun.tools.classfile.*; @@ -265,7 +263,7 @@ * Get the set of keys from the javadoc resource bundles. */ Set getResourceKeys() { - Module jdk_javadoc = Layer.boot().findModule("jdk.javadoc").get(); + Module jdk_javadoc = ModuleLayer.boot().findModule("jdk.javadoc").get(); String[] names = { "jdk.javadoc.internal.doclets.formats.html.resources.standard", "jdk.javadoc.internal.doclets.toolkit.resources.doclets", diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/jdk/jshell/KullaTesting.java --- a/langtools/test/jdk/jshell/KullaTesting.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/jdk/jshell/KullaTesting.java Fri Apr 07 10:58:38 2017 +0100 @@ -30,7 +30,6 @@ import java.lang.reflect.Method; import java.lang.module.Configuration; import java.lang.module.ModuleFinder; -import java.lang.reflect.Layer; import java.nio.file.Paths; import java.nio.file.Path; import java.util.ArrayList; @@ -211,11 +210,11 @@ public ClassLoader createAndRunFromModule(String moduleName, Path modPath) { ModuleFinder finder = ModuleFinder.of(modPath); - Layer parent = Layer.boot(); + ModuleLayer parent = ModuleLayer.boot(); Configuration cf = parent.configuration() .resolve(finder, ModuleFinder.of(), Set.of(moduleName)); ClassLoader scl = ClassLoader.getSystemClassLoader(); - Layer layer = parent.defineModulesWithOneLoader(cf, scl); + ModuleLayer layer = parent.defineModulesWithOneLoader(cf, scl); ClassLoader loader = layer.findLoader(moduleName); ClassLoader ccl = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(loader); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/6410653/T6410653.java --- a/langtools/test/tools/javac/6410653/T6410653.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/6410653/T6410653.java Fri Apr 07 10:58:38 2017 +0100 @@ -31,7 +31,6 @@ */ import java.lang.reflect.Field; -import java.lang.reflect.Module; import java.io.File; import java.io.ByteArrayOutputStream; import javax.tools.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/T6406771.java --- a/langtools/test/tools/javac/T6406771.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/T6406771.java Fri Apr 07 10:58:38 2017 +0100 @@ -11,9 +11,9 @@ // Editing the imports and other leading text may affect the golden text in the tests field. // Also beware of scripts that auto-expand tabs to spaces. + + import java.io.*; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import javax.annotation.processing.*; import javax.lang.model.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/diags/CheckExamples.java --- a/langtools/test/tools/javac/diags/CheckExamples.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/diags/CheckExamples.java Fri Apr 07 10:58:38 2017 +0100 @@ -39,8 +39,6 @@ */ import java.io.*; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.*; @@ -111,7 +109,7 @@ } } - Module jdk_compiler = Layer.boot().findModule("jdk.compiler").get(); + Module jdk_compiler = ModuleLayer.boot().findModule("jdk.compiler").get(); ResourceBundle b = ResourceBundle.getBundle("com.sun.tools.javac.resources.compiler", jdk_compiler); Set resourceKeys = new TreeSet(b.keySet()); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/diags/CheckResourceKeys.java --- a/langtools/test/tools/javac/diags/CheckResourceKeys.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/diags/CheckResourceKeys.java Fri Apr 07 10:58:38 2017 +0100 @@ -31,8 +31,6 @@ */ import java.io.*; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import javax.tools.*; import com.sun.tools.classfile.*; @@ -395,7 +393,7 @@ * Get the set of keys from the javac resource bundles. */ Set getResourceKeys() { - Module jdk_compiler = Layer.boot().findModule("jdk.compiler").get(); + Module jdk_compiler = ModuleLayer.boot().findModule("jdk.compiler").get(); Set results = new TreeSet(); for (String name : new String[]{"javac", "compiler"}) { ResourceBundle b = diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/diags/examples/NoJavaLang.java --- a/langtools/test/tools/javac/diags/examples/NoJavaLang.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/diags/examples/NoJavaLang.java Fri Apr 07 10:58:38 2017 +0100 @@ -22,7 +22,7 @@ */ // key: compiler.misc.fatal.err.no.java.lang -// options: -source 8 -target 8 -Xbootclasspath: +// options: -source 8 -target 8 -Xbootclasspath: -classpath . // run: backdoor class NoJavaLang { } diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java --- a/langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java Fri Apr 07 10:58:38 2017 +0100 @@ -74,7 +74,7 @@ // test with bootclasspath, for as long as its around void testBootClassPath() { - String[] bcpOpts = { "-Xlint:-options", "-source", "8", "-bootclasspath", "." }; + String[] bcpOpts = { "-Xlint:-options", "-source", "8", "-bootclasspath", ".", "-classpath", "." }; test(bcpOpts, compilerErrorMessage); } diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/lib/JavacTestingAbstractProcessor.java --- a/langtools/test/tools/javac/lib/JavacTestingAbstractProcessor.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/lib/JavacTestingAbstractProcessor.java Fri Apr 07 10:58:38 2017 +0100 @@ -21,8 +21,6 @@ * questions. */ -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import javax.annotation.processing.*; import javax.lang.model.SourceVersion; @@ -102,7 +100,7 @@ protected void addExports(String moduleName, String... packageNames) { for (String packageName : packageNames) { try { - Layer layer = Layer.boot(); + ModuleLayer layer = ModuleLayer.boot(); Optional m = layer.findModule(moduleName); if (!m.isPresent()) throw new Error("module not found: " + moduleName); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/modules/AddLimitMods.java --- a/langtools/test/tools/javac/modules/AddLimitMods.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/modules/AddLimitMods.java Fri Apr 07 10:58:38 2017 +0100 @@ -418,13 +418,13 @@ " public static void main(String... args) throws Exception {\n"); for (Entry e : MODULES_TO_CHECK_TO_SAMPLE_CLASS.entrySet()) { - testClassNamed.append(" System.err.println(\"visible:" + e.getKey() + ":\" + java.lang.reflect.Layer.boot().findModule(\"" + e.getKey() + "\").isPresent());\n"); + testClassNamed.append(" System.err.println(\"visible:" + e.getKey() + ":\" + ModuleLayer.boot().findModule(\"" + e.getKey() + "\").isPresent());\n"); } testClassNamed.append(" Class cp = Class.forName(Test.class.getClassLoader().getUnnamedModule(), \"cp.CP\");\n"); testClassNamed.append(" cp.getDeclaredMethod(\"runMe\").invoke(null);\n"); - testClassNamed.append(" Class automatic = Class.forName(java.lang.reflect.Layer.boot().findModule(\"automatic\").get(), \"automatic.Automatic\");\n"); + testClassNamed.append(" Class automatic = Class.forName(ModuleLayer.boot().findModule(\"automatic\").get(), \"automatic.Automatic\");\n"); testClassNamed.append(" automatic.getDeclaredMethod(\"runMe\").invoke(null);\n"); testClassNamed.append(" }\n" + diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/modules/AutomaticModules.java --- a/langtools/test/tools/javac/modules/AutomaticModules.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/modules/AutomaticModules.java Fri Apr 07 10:58:38 2017 +0100 @@ -300,9 +300,8 @@ .writeAll() .getOutputLines(Task.OutputKind.DIRECT); - expected = Arrays.asList("Impl.java:1:47: compiler.err.package.not.visible: apiB, (compiler.misc.not.def.access.does.not.read: m1x, apiB, automaticB)", - "Impl.java:1:59: compiler.err.package.not.visible: m2x, (compiler.misc.not.def.access.does.not.read: m1x, m2x, m2x)", - "2 errors"); + expected = Arrays.asList("Impl.java:1:59: compiler.err.package.not.visible: m2x, (compiler.misc.not.def.access.does.not.read: m1x, m2x, m2x)", + "1 error"); if (!expected.equals(log)) { throw new Exception("expected output not found: " + log); @@ -310,7 +309,7 @@ } @Test - public void testDropTrailingVersion(Path base) throws Exception { + public void testWithTrailingVersion(Path base) throws Exception { Path legacySrc = base.resolve("legacy-src"); tb.writeJavaFiles(legacySrc, "package api; public class Api {}"); @@ -348,7 +347,7 @@ Files.createDirectories(classes); tb.writeJavaFiles(m, - "module m { requires test; }", + "module m { requires test1; }", "package impl; public class Impl { public void e(api.Api api) { } }"); new JavacTask(tb) @@ -358,4 +357,70 @@ .run() .writeAll(); } + + @Test + public void testMultipleAutomatic(Path base) throws Exception { + Path modulePath = base.resolve("module-path"); + + Files.createDirectories(modulePath); + + for (char c : new char[] {'A', 'B'}) { + Path automaticSrc = base.resolve("automaticSrc" + c); + tb.writeJavaFiles(automaticSrc, "package api" + c + "; public class Api {}"); + Path automaticClasses = base.resolve("automaticClasses" + c); + tb.createDirectories(automaticClasses); + + String automaticLog = new JavacTask(tb) + .outdir(automaticClasses) + .files(findJavaFiles(automaticSrc)) + .run() + .writeAll() + .getOutput(Task.OutputKind.DIRECT); + + if (!automaticLog.isEmpty()) + throw new Exception("expected output not found: " + automaticLog); + + Path automaticJar = modulePath.resolve("automatic" + c + "-1.0.jar"); + + new JarTask(tb, automaticJar) + .baseDir(automaticClasses) + .files("api" + c + "/Api.class") + .run(); + } + + Path src = base.resolve("src"); + + tb.writeJavaFiles(src.resolve("m1x"), + "package impl; public class Impl { apiA.Api a; apiB.Api b; }"); + + Path classes = base.resolve("classes"); + + Files.createDirectories(classes); + + List log = new JavacTask(tb) + .options("--module-path", modulePath.toString(), + "-XDrawDiagnostics") + .outdir(classes) + .files(findJavaFiles(src)) + .run(Task.Expect.FAIL) + .writeAll() + .getOutputLines(Task.OutputKind.DIRECT); + + List expected = Arrays.asList("Impl.java:1:35: compiler.err.package.not.visible: apiA, (compiler.misc.not.def.access.does.not.read.from.unnamed: apiA, automaticA)", + "Impl.java:1:47: compiler.err.package.not.visible: apiB, (compiler.misc.not.def.access.does.not.read.from.unnamed: apiB, automaticB)", + "2 errors"); + + if (!expected.equals(log)) { + throw new Exception("expected output not found: " + log); + } + + new JavacTask(tb) + .options("--module-path", modulePath.toString(), + "--add-modules", "automaticA", + "-XDrawDiagnostics") + .outdir(classes) + .files(findJavaFiles(src)) + .run() + .writeAll(); + } } diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/modules/IncubatingTest.java --- a/langtools/test/tools/javac/modules/IncubatingTest.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/modules/IncubatingTest.java Fri Apr 07 10:58:38 2017 +0100 @@ -122,14 +122,11 @@ "-XDrawDiagnostics") .outdir(testClasses) .files(findJavaFiles(testSrc)) - .run(Expect.FAIL) + .run(Expect.SUCCESS) .writeAll() .getOutputLines(Task.OutputKind.DIRECT); - expected = Arrays.asList( - "T.java:1:11: compiler.err.package.not.visible: api, (compiler.misc.not.def.access.does.not.read.from.unnamed: api, jdk.i)", - "1 error" - ); + expected = Arrays.asList(""); if (!expected.equals(log)) { throw new AssertionError("Unexpected output: " + log); diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/treeannotests/TestProcessor.java --- a/langtools/test/tools/javac/treeannotests/TestProcessor.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/treeannotests/TestProcessor.java Fri Apr 07 10:58:38 2017 +0100 @@ -21,8 +21,6 @@ * questions. */ -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.io.*; import java.util.*; import javax.annotation.processing.*; diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javac/warnings/VerifyLintDescriptions.java --- a/langtools/test/tools/javac/warnings/VerifyLintDescriptions.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javac/warnings/VerifyLintDescriptions.java Fri Apr 07 10:58:38 2017 +0100 @@ -30,8 +30,6 @@ * jdk.compiler/com.sun.tools.javac.util */ -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -42,7 +40,7 @@ public class VerifyLintDescriptions { public static void main(String... args) { - Layer boot = Layer.boot(); + ModuleLayer boot = ModuleLayer.boot(); Module jdk_compiler = boot.findModule("jdk.compiler").get(); ResourceBundle b = ResourceBundle.getBundle("com.sun.tools.javac.resources.javac", Locale.US, diff -r 0753a201e0d7 -r 0bfc30a4b905 langtools/test/tools/javadoc/CheckResourceKeys.java --- a/langtools/test/tools/javadoc/CheckResourceKeys.java Thu Apr 06 18:00:34 2017 +0000 +++ b/langtools/test/tools/javadoc/CheckResourceKeys.java Fri Apr 07 10:58:38 2017 +0100 @@ -32,8 +32,6 @@ */ import java.io.*; -import java.lang.reflect.Layer; -import java.lang.reflect.Module; import java.util.*; import javax.tools.*; import com.sun.tools.classfile.*; @@ -229,7 +227,7 @@ * Get the set of keys from the javadoc resource bundles. */ Set getResourceKeys() { - Module jdk_javadoc = Layer.boot().findModule("jdk.javadoc").get(); + Module jdk_javadoc = ModuleLayer.boot().findModule("jdk.javadoc").get(); String[] names = { "com.sun.tools.doclets.formats.html.resources.standard", "com.sun.tools.doclets.internal.toolkit.resources.doclets",