1535 }
1536
1537 return requiresTransitive;
1538 }
1539
1540 private void initVisiblePackages(ModuleSymbol msym, Collection<ModuleSymbol> readable) {
1541 initAddExports();
1542
1543 msym.visiblePackages = new LinkedHashMap<>();
1544 msym.readModules = new HashSet<>(readable);
1545
1546 Map<Name, ModuleSymbol> seen = new HashMap<>();
1547
1548 for (ModuleSymbol rm : readable) {
1549 if (rm == syms.unnamedModule)
1550 continue;
1551 addVisiblePackages(msym, seen, rm, rm.exports);
1552 }
1553
1554 addExports.forEach((exportsFrom, exports) -> {
1555 addVisiblePackages(msym, seen, exportsFrom, exports);
1556 });
1557 }
1558
1559 private void addVisiblePackages(ModuleSymbol msym,
1560 Map<Name, ModuleSymbol> seenPackages,
1561 ModuleSymbol exportsFrom,
1562 Collection<ExportsDirective> exports) {
1563 for (ExportsDirective d : exports) {
1564 if (d.modules == null || d.modules.contains(msym)) {
1565 Name packageName = d.packge.fullname;
1566 ModuleSymbol previousModule = seenPackages.get(packageName);
1567
1568 if (previousModule != null && previousModule != exportsFrom) {
1569 Env<AttrContext> env = typeEnvs.get(msym);
1570 JavaFileObject origSource = env != null ? log.useSource(env.toplevel.sourcefile)
1571 : null;
1572 DiagnosticPosition pos = env != null ? env.tree.pos() : null;
1573 try {
1574 if (msym.isUnnamed()) {
1575 log.error(pos, Errors.PackageClashFromRequiresInUnnamed(packageName,
|
1535 }
1536
1537 return requiresTransitive;
1538 }
1539
1540 private void initVisiblePackages(ModuleSymbol msym, Collection<ModuleSymbol> readable) {
1541 initAddExports();
1542
1543 msym.visiblePackages = new LinkedHashMap<>();
1544 msym.readModules = new HashSet<>(readable);
1545
1546 Map<Name, ModuleSymbol> seen = new HashMap<>();
1547
1548 for (ModuleSymbol rm : readable) {
1549 if (rm == syms.unnamedModule)
1550 continue;
1551 addVisiblePackages(msym, seen, rm, rm.exports);
1552 }
1553
1554 addExports.forEach((exportsFrom, exports) -> {
1555 if (msym.readModules.contains(exportsFrom)) {
1556 addVisiblePackages(msym, seen, exportsFrom, exports);
1557 }
1558 });
1559 }
1560
1561 private void addVisiblePackages(ModuleSymbol msym,
1562 Map<Name, ModuleSymbol> seenPackages,
1563 ModuleSymbol exportsFrom,
1564 Collection<ExportsDirective> exports) {
1565 for (ExportsDirective d : exports) {
1566 if (d.modules == null || d.modules.contains(msym)) {
1567 Name packageName = d.packge.fullname;
1568 ModuleSymbol previousModule = seenPackages.get(packageName);
1569
1570 if (previousModule != null && previousModule != exportsFrom) {
1571 Env<AttrContext> env = typeEnvs.get(msym);
1572 JavaFileObject origSource = env != null ? log.useSource(env.toplevel.sourcefile)
1573 : null;
1574 DiagnosticPosition pos = env != null ? env.tree.pos() : null;
1575 try {
1576 if (msym.isUnnamed()) {
1577 log.error(pos, Errors.PackageClashFromRequiresInUnnamed(packageName,
|