< prev index next >
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java
Print this page
@@ -156,10 +156,11 @@
private Map<ModuleSymbol, Set<RequiresDirective>> addReads;
private final String addModsOpt;
private final Set<String> extraAddMods = new HashSet<>();
private final String limitModsOpt;
private final Set<String> extraLimitMods = new HashSet<>();
+ private final String moduleVersionOpt;
private final boolean lintOptions;
private Set<ModuleSymbol> rootModules = null;
@@ -201,10 +202,11 @@
addExportsOpt = options.get(Option.ADD_EXPORTS);
addReadsOpt = options.get(Option.ADD_READS);
addModsOpt = options.get(Option.ADD_MODULES);
limitModsOpt = options.get(Option.LIMIT_MODULES);
+ moduleVersionOpt = options.get(Option.MODULE_VERSION);
}
int depth = -1;
private void dprintln(String msg) {
for (int i = 0; i < depth; i++)
@@ -593,17 +595,20 @@
public void complete(Symbol sym) throws CompletionFailure {
ModuleSymbol msym = (ModuleSymbol) sym;
msym.flags_field |= UNATTRIBUTED;
ModuleVisitor v = new ModuleVisitor();
JavaFileObject prev = log.useSource(tree.sourcefile);
- try {
JCModuleDecl moduleDecl = tree.getModuleDecl();
+ DiagnosticPosition prevLintPos = deferredLintHandler.setPos(moduleDecl.pos());
+
+ try {
moduleDecl.accept(v);
completeModule(msym);
checkCyclicDependencies(moduleDecl);
} finally {
log.useSource(prev);
+ deferredLintHandler.setPos(prevLintPos);
msym.flags_field &= ~UNATTRIBUTED;
}
}
@Override
@@ -676,21 +681,18 @@
List<ModuleSymbol> toModules = null;
if (tree.moduleNames != null) {
Set<ModuleSymbol> to = new LinkedHashSet<>();
for (JCExpression n: tree.moduleNames) {
ModuleSymbol msym = lookupModule(n);
- if (msym.kind != MDL) {
- log.error(n.pos(), Errors.ModuleNotFound(msym));
- } else {
+ chk.checkModuleExists(n.pos(), msym);
for (ExportsDirective d : exportsForPackage) {
checkDuplicateExportsToModule(n, msym, d);
}
if (!to.add(msym)) {
reportExportsConflictToModule(n, msym);
}
}
- }
toModules = List.from(to);
}
if (toModules == null || !toModules.isEmpty()) {
Set<ExportsFlag> flags = EnumSet.noneOf(ExportsFlag.class);
@@ -738,21 +740,18 @@
List<ModuleSymbol> toModules = null;
if (tree.moduleNames != null) {
Set<ModuleSymbol> to = new LinkedHashSet<>();
for (JCExpression n: tree.moduleNames) {
ModuleSymbol msym = lookupModule(n);
- if (msym.kind != MDL) {
- log.error(n.pos(), Errors.ModuleNotFound(msym));
- } else {
+ chk.checkModuleExists(n.pos(), msym);
for (OpensDirective d : opensForPackage) {
checkDuplicateOpensToModule(n, msym, d);
}
if (!to.add(msym)) {
reportOpensConflictToModule(n, msym);
}
}
- }
toModules = List.from(to);
}
if (toModules == null || !toModules.isEmpty()) {
Set<OpensFlag> flags = EnumSet.noneOf(OpensFlag.class);
@@ -1131,10 +1130,16 @@
Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, observable);
result.add(syms.unnamedModule);
allModules = result;
+
+ //add module versions from options, if any:
+ if (moduleVersionOpt != null) {
+ Name version = names.fromString(moduleVersionOpt);
+ rootModules.forEach(m -> m.version = version);
+ }
}
public boolean isInModuleGraph(ModuleSymbol msym) {
return allModules == null || allModules.contains(msym);
}
< prev index next >