< prev index next >

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

Print this page
rev 3886 : 8155026: javac grants implied readability to explicit modules
Summary: Ordinary named modules shouldn't be requires public for automatic modules
Reviewed-by: TBD

*** 502,512 **** moduleFinder.findAllModules(); for (ModuleSymbol ms : allModules()) { if (ms == syms.unnamedModule || ms == msym) continue; ! RequiresDirective d = new RequiresDirective(ms, EnumSet.of(RequiresFlag.PUBLIC)); directives.add(d); requires.add(d); } RequiresDirective requiresUnnamed = new RequiresDirective(syms.unnamedModule); --- 502,514 ---- moduleFinder.findAllModules(); for (ModuleSymbol ms : allModules()) { if (ms == syms.unnamedModule || ms == msym) continue; ! Set<RequiresFlag> flags = (ms.flags_field & Flags.AUTOMATIC_MODULE) != 0 ? ! EnumSet.of(RequiresFlag.PUBLIC) : EnumSet.noneOf(RequiresFlag.class); ! RequiresDirective d = new RequiresDirective(ms, flags); directives.add(d); requires.add(d); } RequiresDirective requiresUnnamed = new RequiresDirective(syms.unnamedModule);
*** 993,1003 **** requires = requires.tail; } Set<ModuleSymbol> readable = new LinkedHashSet<>(); Set<ModuleSymbol> requiresPublic = new HashSet<>(); ! if ((msym.flags() & Flags.AUTOMATIC_MODULE) == 0) { for (RequiresDirective d : msym.requires) { d.module.complete(); readable.add(d.module); Set<ModuleSymbol> s = retrieveRequiresPublic(d.module); Assert.checkNonNull(s, () -> "no entry in cache for " + d.module); --- 995,1005 ---- requires = requires.tail; } Set<ModuleSymbol> readable = new LinkedHashSet<>(); Set<ModuleSymbol> requiresPublic = new HashSet<>(); ! for (RequiresDirective d : msym.requires) { d.module.complete(); readable.add(d.module); Set<ModuleSymbol> s = retrieveRequiresPublic(d.module); Assert.checkNonNull(s, () -> "no entry in cache for " + d.module);
*** 1005,1025 **** if (d.flags.contains(RequiresFlag.PUBLIC)) { requiresPublic.add(d.module); requiresPublic.addAll(s); } } - } else { - //the module graph may contain cycles involving automatic modules - //handle automatic modules separatelly: - Set<ModuleSymbol> s = retrieveRequiresPublic(msym); - - readable.addAll(s); - requiresPublic.addAll(s); - //ensure the unnamed module is added (it is not requires public): - readable.add(syms.unnamedModule); - } requiresPublicCache.put(msym, requiresPublic); initVisiblePackages(msym, readable); for (ExportsDirective d: msym.exports) { d.packge.modle = msym; } --- 1007,1017 ----
< prev index next >