< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java

Print this page
rev 50632 : [mq]: defaultroots

@@ -79,10 +79,11 @@
 import com.sun.tools.javac.code.Symtab;
 import com.sun.tools.javac.code.Type;
 import com.sun.tools.javac.code.Types;
 import com.sun.tools.javac.jvm.ClassWriter;
 import com.sun.tools.javac.jvm.JNIWriter;
+import com.sun.tools.javac.jvm.Target;
 import com.sun.tools.javac.main.Option;
 import com.sun.tools.javac.resources.CompilerProperties.Errors;
 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;

@@ -142,10 +143,11 @@
     private final TypeEnvs typeEnvs;
     private final Types types;
     private final JavaFileManager fileManager;
     private final ModuleFinder moduleFinder;
     private final Source source;
+    private final Target target;
     private final boolean allowModules;
     private final boolean allowAccessIntoSystem;
 
     public final boolean multiModuleMode;
 

@@ -189,10 +191,11 @@
         typeEnvs = TypeEnvs.instance(context);
         moduleFinder = ModuleFinder.instance(context);
         types = Types.instance(context);
         fileManager = context.get(JavaFileManager.class);
         source = Source.instance(context);
+        target = Target.instance(context);
         allowModules = Feature.MODULES.allowedInSource(source);
         Options options = Options.instance(context);
 
         allowAccessIntoSystem = options.isUnset(Option.RELEASE);
         lintOptions = options.isUnset(Option.XLINT_CUSTOM, "-" + LintCategory.OPTIONS.option);

@@ -1232,23 +1235,29 @@
              (observable == null) ? (moduleFinder.findModule(sym).kind != ERR) : observable.contains(sym);
         Predicate<ModuleSymbol> systemModulePred = sym -> (sym.flags() & Flags.SYSTEM_MODULE) != 0;
         Set<ModuleSymbol> enabledRoot = new LinkedHashSet<>();
 
         if (rootModules.contains(syms.unnamedModule)) {
-            ModuleSymbol javaSE = syms.getModule(java_se);
             Predicate<ModuleSymbol> jdkModulePred;
-
+            if (target.allApiModulesAreRoots()) {
+                jdkModulePred = sym -> {
+                    sym.complete();
+                    return sym.exports.stream().anyMatch(e -> e.modules == null);
+                };
+            } else {
+                ModuleSymbol javaSE = syms.getModule(java_se);
             if (javaSE != null && (observable == null || observable.contains(javaSE))) {
                 jdkModulePred = sym -> {
                     sym.complete();
                     return   !sym.name.startsWith(java_)
                            && sym.exports.stream().anyMatch(e -> e.modules == null);
                 };
                 enabledRoot.add(javaSE);
             } else {
                 jdkModulePred = sym -> true;
             }
+            }
 
             Predicate<ModuleSymbol> noIncubatorPred = sym -> {
                 sym.complete();
                 return !sym.resolutionFlags.contains(ModuleResolutionFlags.DO_NOT_RESOLVE_BY_DEFAULT);
             };
< prev index next >