< prev index next >

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

Print this page




  64 import com.sun.tools.javac.code.Directive.UsesDirective;
  65 import com.sun.tools.javac.code.Flags;
  66 import com.sun.tools.javac.code.Lint.LintCategory;
  67 import com.sun.tools.javac.code.ModuleFinder;
  68 import com.sun.tools.javac.code.Source;
  69 import com.sun.tools.javac.code.Symbol;
  70 import com.sun.tools.javac.code.Symbol.ClassSymbol;
  71 import com.sun.tools.javac.code.Symbol.Completer;
  72 import com.sun.tools.javac.code.Symbol.CompletionFailure;
  73 import com.sun.tools.javac.code.Symbol.MethodSymbol;
  74 import com.sun.tools.javac.code.Symbol.ModuleFlags;
  75 import com.sun.tools.javac.code.Symbol.ModuleSymbol;
  76 import com.sun.tools.javac.code.Symbol.PackageSymbol;
  77 import com.sun.tools.javac.code.Symtab;
  78 import com.sun.tools.javac.code.Type;
  79 import com.sun.tools.javac.code.Types;
  80 import com.sun.tools.javac.jvm.ClassWriter;
  81 import com.sun.tools.javac.jvm.JNIWriter;
  82 import com.sun.tools.javac.main.Option;
  83 import com.sun.tools.javac.resources.CompilerProperties.Errors;

  84 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
  85 import com.sun.tools.javac.tree.JCTree;
  86 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
  87 import com.sun.tools.javac.tree.JCTree.JCDirective;
  88 import com.sun.tools.javac.tree.JCTree.JCExports;
  89 import com.sun.tools.javac.tree.JCTree.JCExpression;
  90 import com.sun.tools.javac.tree.JCTree.JCModuleDecl;
  91 import com.sun.tools.javac.tree.JCTree.JCOpens;
  92 import com.sun.tools.javac.tree.JCTree.JCProvides;
  93 import com.sun.tools.javac.tree.JCTree.JCRequires;
  94 import com.sun.tools.javac.tree.JCTree.JCUses;
  95 import com.sun.tools.javac.tree.JCTree.Tag;
  96 import com.sun.tools.javac.tree.TreeInfo;
  97 import com.sun.tools.javac.util.Assert;
  98 import com.sun.tools.javac.util.Context;
  99 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 100 import com.sun.tools.javac.util.List;
 101 import com.sun.tools.javac.util.ListBuffer;
 102 import com.sun.tools.javac.util.Log;
 103 import com.sun.tools.javac.util.Name;


1288 
1289         Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, rootModules, observable);
1290 
1291         result.add(syms.unnamedModule);
1292 
1293         boolean hasAutomatic = result.stream().anyMatch(IS_AUTOMATIC);
1294 
1295         if (hasAutomatic) {
1296             syms.getAllModules()
1297                 .stream()
1298                 .filter(IS_AUTOMATIC)
1299                 .forEach(result::add);
1300         }
1301 
1302         String incubatingModules = result.stream()
1303                 .filter(msym -> msym.resolutionFlags.contains(ModuleResolutionFlags.WARN_INCUBATING))
1304                 .map(msym -> msym.name.toString())
1305                 .collect(Collectors.joining(","));
1306 
1307         if (!incubatingModules.isEmpty()) {
1308             log.warning(Warnings.IncubatingModules(incubatingModules));
1309         }
1310 
1311         allModules = result;
1312 
1313         //add module versions from options, if any:
1314         if (moduleVersionOpt != null) {
1315             Name version = names.fromString(moduleVersionOpt);
1316             rootModules.forEach(m -> m.version = version);
1317         }
1318     }
1319     //where:
1320         private static final Predicate<ModuleSymbol> IS_AUTOMATIC =
1321                 m -> (m.flags_field & Flags.AUTOMATIC_MODULE) != 0;
1322 
1323     public boolean isInModuleGraph(ModuleSymbol msym) {
1324         return allModules == null || allModules.contains(msym);
1325     }
1326 
1327     private Set<ModuleSymbol> computeTransitiveClosure(Set<? extends ModuleSymbol> base,
1328                                                        Set<? extends ModuleSymbol> rootModules,




  64 import com.sun.tools.javac.code.Directive.UsesDirective;
  65 import com.sun.tools.javac.code.Flags;
  66 import com.sun.tools.javac.code.Lint.LintCategory;
  67 import com.sun.tools.javac.code.ModuleFinder;
  68 import com.sun.tools.javac.code.Source;
  69 import com.sun.tools.javac.code.Symbol;
  70 import com.sun.tools.javac.code.Symbol.ClassSymbol;
  71 import com.sun.tools.javac.code.Symbol.Completer;
  72 import com.sun.tools.javac.code.Symbol.CompletionFailure;
  73 import com.sun.tools.javac.code.Symbol.MethodSymbol;
  74 import com.sun.tools.javac.code.Symbol.ModuleFlags;
  75 import com.sun.tools.javac.code.Symbol.ModuleSymbol;
  76 import com.sun.tools.javac.code.Symbol.PackageSymbol;
  77 import com.sun.tools.javac.code.Symtab;
  78 import com.sun.tools.javac.code.Type;
  79 import com.sun.tools.javac.code.Types;
  80 import com.sun.tools.javac.jvm.ClassWriter;
  81 import com.sun.tools.javac.jvm.JNIWriter;
  82 import com.sun.tools.javac.main.Option;
  83 import com.sun.tools.javac.resources.CompilerProperties.Errors;
  84 import com.sun.tools.javac.resources.CompilerProperties.Notes;
  85 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
  86 import com.sun.tools.javac.tree.JCTree;
  87 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
  88 import com.sun.tools.javac.tree.JCTree.JCDirective;
  89 import com.sun.tools.javac.tree.JCTree.JCExports;
  90 import com.sun.tools.javac.tree.JCTree.JCExpression;
  91 import com.sun.tools.javac.tree.JCTree.JCModuleDecl;
  92 import com.sun.tools.javac.tree.JCTree.JCOpens;
  93 import com.sun.tools.javac.tree.JCTree.JCProvides;
  94 import com.sun.tools.javac.tree.JCTree.JCRequires;
  95 import com.sun.tools.javac.tree.JCTree.JCUses;
  96 import com.sun.tools.javac.tree.JCTree.Tag;
  97 import com.sun.tools.javac.tree.TreeInfo;
  98 import com.sun.tools.javac.util.Assert;
  99 import com.sun.tools.javac.util.Context;
 100 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 101 import com.sun.tools.javac.util.List;
 102 import com.sun.tools.javac.util.ListBuffer;
 103 import com.sun.tools.javac.util.Log;
 104 import com.sun.tools.javac.util.Name;


1289 
1290         Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, rootModules, observable);
1291 
1292         result.add(syms.unnamedModule);
1293 
1294         boolean hasAutomatic = result.stream().anyMatch(IS_AUTOMATIC);
1295 
1296         if (hasAutomatic) {
1297             syms.getAllModules()
1298                 .stream()
1299                 .filter(IS_AUTOMATIC)
1300                 .forEach(result::add);
1301         }
1302 
1303         String incubatingModules = result.stream()
1304                 .filter(msym -> msym.resolutionFlags.contains(ModuleResolutionFlags.WARN_INCUBATING))
1305                 .map(msym -> msym.name.toString())
1306                 .collect(Collectors.joining(","));
1307 
1308         if (!incubatingModules.isEmpty()) {
1309             log.note(Notes.IncubatingModules(incubatingModules));
1310         }
1311 
1312         allModules = result;
1313 
1314         //add module versions from options, if any:
1315         if (moduleVersionOpt != null) {
1316             Name version = names.fromString(moduleVersionOpt);
1317             rootModules.forEach(m -> m.version = version);
1318         }
1319     }
1320     //where:
1321         private static final Predicate<ModuleSymbol> IS_AUTOMATIC =
1322                 m -> (m.flags_field & Flags.AUTOMATIC_MODULE) != 0;
1323 
1324     public boolean isInModuleGraph(ModuleSymbol msym) {
1325         return allModules == null || allModules.contains(msym);
1326     }
1327 
1328     private Set<ModuleSymbol> computeTransitiveClosure(Set<? extends ModuleSymbol> base,
1329                                                        Set<? extends ModuleSymbol> rootModules,


< prev index next >