equal
deleted
inserted
replaced
156 private Map<ModuleSymbol, Set<RequiresDirective>> addReads; |
156 private Map<ModuleSymbol, Set<RequiresDirective>> addReads; |
157 private final String addModsOpt; |
157 private final String addModsOpt; |
158 private final Set<String> extraAddMods = new HashSet<>(); |
158 private final Set<String> extraAddMods = new HashSet<>(); |
159 private final String limitModsOpt; |
159 private final String limitModsOpt; |
160 private final Set<String> extraLimitMods = new HashSet<>(); |
160 private final Set<String> extraLimitMods = new HashSet<>(); |
|
161 private final String moduleVersionOpt; |
161 |
162 |
162 private final boolean lintOptions; |
163 private final boolean lintOptions; |
163 |
164 |
164 private Set<ModuleSymbol> rootModules = null; |
165 private Set<ModuleSymbol> rootModules = null; |
165 |
166 |
201 |
202 |
202 addExportsOpt = options.get(Option.ADD_EXPORTS); |
203 addExportsOpt = options.get(Option.ADD_EXPORTS); |
203 addReadsOpt = options.get(Option.ADD_READS); |
204 addReadsOpt = options.get(Option.ADD_READS); |
204 addModsOpt = options.get(Option.ADD_MODULES); |
205 addModsOpt = options.get(Option.ADD_MODULES); |
205 limitModsOpt = options.get(Option.LIMIT_MODULES); |
206 limitModsOpt = options.get(Option.LIMIT_MODULES); |
|
207 moduleVersionOpt = options.get(Option.MODULE_VERSION); |
206 } |
208 } |
207 |
209 |
208 int depth = -1; |
210 int depth = -1; |
209 private void dprintln(String msg) { |
211 private void dprintln(String msg) { |
210 for (int i = 0; i < depth; i++) |
212 for (int i = 0; i < depth; i++) |
603 public void complete(Symbol sym) throws CompletionFailure { |
605 public void complete(Symbol sym) throws CompletionFailure { |
604 ModuleSymbol msym = (ModuleSymbol) sym; |
606 ModuleSymbol msym = (ModuleSymbol) sym; |
605 msym.flags_field |= UNATTRIBUTED; |
607 msym.flags_field |= UNATTRIBUTED; |
606 ModuleVisitor v = new ModuleVisitor(); |
608 ModuleVisitor v = new ModuleVisitor(); |
607 JavaFileObject prev = log.useSource(tree.sourcefile); |
609 JavaFileObject prev = log.useSource(tree.sourcefile); |
|
610 JCModuleDecl moduleDecl = tree.getModuleDecl(); |
|
611 DiagnosticPosition prevLintPos = deferredLintHandler.setPos(moduleDecl.pos()); |
|
612 |
608 try { |
613 try { |
609 JCModuleDecl moduleDecl = tree.getModuleDecl(); |
|
610 moduleDecl.accept(v); |
614 moduleDecl.accept(v); |
611 completeModule(msym); |
615 completeModule(msym); |
612 checkCyclicDependencies(moduleDecl); |
616 checkCyclicDependencies(moduleDecl); |
613 } finally { |
617 } finally { |
614 log.useSource(prev); |
618 log.useSource(prev); |
|
619 deferredLintHandler.setPos(prevLintPos); |
615 msym.flags_field &= ~UNATTRIBUTED; |
620 msym.flags_field &= ~UNATTRIBUTED; |
616 } |
621 } |
617 } |
622 } |
618 |
623 |
619 @Override |
624 @Override |
691 List<ModuleSymbol> toModules = null; |
696 List<ModuleSymbol> toModules = null; |
692 if (tree.moduleNames != null) { |
697 if (tree.moduleNames != null) { |
693 Set<ModuleSymbol> to = new LinkedHashSet<>(); |
698 Set<ModuleSymbol> to = new LinkedHashSet<>(); |
694 for (JCExpression n: tree.moduleNames) { |
699 for (JCExpression n: tree.moduleNames) { |
695 ModuleSymbol msym = lookupModule(n); |
700 ModuleSymbol msym = lookupModule(n); |
696 if (msym.kind != MDL) { |
701 chk.checkModuleExists(n.pos(), msym); |
697 log.error(n.pos(), Errors.ModuleNotFound(msym)); |
702 for (ExportsDirective d : exportsForPackage) { |
698 } else { |
703 checkDuplicateExportsToModule(n, msym, d); |
699 for (ExportsDirective d : exportsForPackage) { |
704 } |
700 checkDuplicateExportsToModule(n, msym, d); |
705 if (!to.add(msym)) { |
701 } |
706 reportExportsConflictToModule(n, msym); |
702 if (!to.add(msym)) { |
|
703 reportExportsConflictToModule(n, msym); |
|
704 } |
|
705 } |
707 } |
706 } |
708 } |
707 toModules = List.from(to); |
709 toModules = List.from(to); |
708 } |
710 } |
709 |
711 |
753 List<ModuleSymbol> toModules = null; |
755 List<ModuleSymbol> toModules = null; |
754 if (tree.moduleNames != null) { |
756 if (tree.moduleNames != null) { |
755 Set<ModuleSymbol> to = new LinkedHashSet<>(); |
757 Set<ModuleSymbol> to = new LinkedHashSet<>(); |
756 for (JCExpression n: tree.moduleNames) { |
758 for (JCExpression n: tree.moduleNames) { |
757 ModuleSymbol msym = lookupModule(n); |
759 ModuleSymbol msym = lookupModule(n); |
758 if (msym.kind != MDL) { |
760 chk.checkModuleExists(n.pos(), msym); |
759 log.error(n.pos(), Errors.ModuleNotFound(msym)); |
761 for (OpensDirective d : opensForPackage) { |
760 } else { |
762 checkDuplicateOpensToModule(n, msym, d); |
761 for (OpensDirective d : opensForPackage) { |
763 } |
762 checkDuplicateOpensToModule(n, msym, d); |
764 if (!to.add(msym)) { |
763 } |
765 reportOpensConflictToModule(n, msym); |
764 if (!to.add(msym)) { |
|
765 reportOpensConflictToModule(n, msym); |
|
766 } |
|
767 } |
766 } |
768 } |
767 } |
769 toModules = List.from(to); |
768 toModules = List.from(to); |
770 } |
769 } |
771 |
770 |
1146 Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, observable); |
1145 Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, observable); |
1147 |
1146 |
1148 result.add(syms.unnamedModule); |
1147 result.add(syms.unnamedModule); |
1149 |
1148 |
1150 allModules = result; |
1149 allModules = result; |
|
1150 |
|
1151 //add module versions from options, if any: |
|
1152 if (moduleVersionOpt != null) { |
|
1153 Name version = names.fromString(moduleVersionOpt); |
|
1154 rootModules.forEach(m -> m.version = version); |
|
1155 } |
1151 } |
1156 } |
1152 |
1157 |
1153 public boolean isInModuleGraph(ModuleSymbol msym) { |
1158 public boolean isInModuleGraph(ModuleSymbol msym) { |
1154 return allModules == null || allModules.contains(msym); |
1159 return allModules == null || allModules.contains(msym); |
1155 } |
1160 } |