290 if (isModuleInfo && isModuleDecl) { |
290 if (isModuleInfo && isModuleDecl) { |
291 JCModuleDecl decl = (JCModuleDecl) toplevel.defs.head; |
291 JCModuleDecl decl = (JCModuleDecl) toplevel.defs.head; |
292 Name name = TreeInfo.fullName(decl.qualId); |
292 Name name = TreeInfo.fullName(decl.qualId); |
293 ModuleSymbol sym; |
293 ModuleSymbol sym; |
294 if (c != null) { |
294 if (c != null) { |
295 sym = (ModuleSymbol) c.owner; |
295 sym = (ModuleSymbol) c.owner; |
296 if (sym.name == null) { |
296 Assert.checkNonNull(sym.name); |
297 //ModuleFinder.findSingleModule creates a stub of a ModuleSymbol without a name, |
297 Name treeName = TreeInfo.fullName(decl.qualId); |
298 //fill the name here after the module-info.java has been parsed |
298 if (sym.name != treeName) { |
299 //also enter the ModuleSymbol among modules: |
299 log.error(decl.pos(), Errors.ModuleNameMismatch(name, sym.name)); |
300 syms.enterModule(sym, name); |
300 } |
301 } else { |
|
302 // TODO: validate name |
|
303 } |
|
304 } else { |
301 } else { |
305 sym = syms.enterModule(name); |
302 sym = syms.enterModule(name); |
306 if (sym.module_info.sourcefile != null && sym.module_info.sourcefile != toplevel.sourcefile) { |
303 if (sym.module_info.sourcefile != null && sym.module_info.sourcefile != toplevel.sourcefile) { |
307 log.error(decl.pos(), Errors.DuplicateModule(sym)); |
304 log.error(decl.pos(), Errors.DuplicateModule(sym)); |
308 return; |
305 return; |
1004 private Completer getUnnamedModuleCompleter() { |
1001 private Completer getUnnamedModuleCompleter() { |
1005 moduleFinder.findAllModules(); |
1002 moduleFinder.findAllModules(); |
1006 return new Symbol.Completer() { |
1003 return new Symbol.Completer() { |
1007 @Override |
1004 @Override |
1008 public void complete(Symbol sym) throws CompletionFailure { |
1005 public void complete(Symbol sym) throws CompletionFailure { |
|
1006 if (inInitModules) { |
|
1007 sym.completer = this; |
|
1008 return ; |
|
1009 } |
1009 ModuleSymbol msym = (ModuleSymbol) sym; |
1010 ModuleSymbol msym = (ModuleSymbol) sym; |
1010 Set<ModuleSymbol> allModules = allModules(); |
1011 Set<ModuleSymbol> allModules = allModules(); |
1011 for (ModuleSymbol m : allModules) { |
1012 for (ModuleSymbol m : allModules) { |
1012 m.complete(); |
1013 m.complete(); |
1013 } |
1014 } |