diff -r f36d08a3e700 -r 7bf4f1b5e438 src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Wed Jun 13 10:34:51 2018 +0200 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Wed Jun 13 12:52:21 2018 +0200 @@ -2012,7 +2012,7 @@ } } return null; - }, sym -> sym.kind == Kind.TYP, false, typeNotFound); + }, sym -> sym.kind == Kind.TYP, typeNotFound); } }; @@ -2049,18 +2049,11 @@ PackageSymbol pack = syms.lookupPackage(env.toplevel.modle, name); if (allowModules && isImportOnDemand(env, name)) { - pack.complete(); - if (!pack.exists()) { - Name nameAndDot = name.append('.', names.empty); - boolean prefixOfKnown = - env.toplevel.modle.visiblePackages.values() - .stream() - .anyMatch(p -> p.fullname.startsWith(nameAndDot)); - + if (pack.members().isEmpty()) { return lookupInvisibleSymbol(env, name, syms::getPackagesForName, syms::enterPackage, sym -> { sym.complete(); - return sym.exists(); - }, prefixOfKnown, pack); + return !sym.members().isEmpty(); + }, pack); } } @@ -2087,7 +2080,6 @@ Function> get, BiFunction load, Predicate validate, - boolean suppressError, Symbol defaultResult) { //even if a class/package cannot be found in the current module and among packages in modules //it depends on that are exported for any or this module, the class/package may exist internally @@ -2097,7 +2089,7 @@ for (S sym : candidates) { if (validate.test(sym)) - return createInvisibleSymbolError(env, suppressError, sym); + return createInvisibleSymbolError(env, sym); } Set recoverableModules = new HashSet<>(syms.getAllModules()); @@ -2117,7 +2109,7 @@ S sym = load.apply(ms, name); if (sym != null && validate.test(sym)) { - return createInvisibleSymbolError(env, suppressError, sym); + return createInvisibleSymbolError(env, sym); } } } @@ -2126,11 +2118,11 @@ return defaultResult; } - private Symbol createInvisibleSymbolError(Env env, boolean suppressError, Symbol sym) { + private Symbol createInvisibleSymbolError(Env env, Symbol sym) { if (symbolPackageVisible(env, sym)) { return new AccessError(env, null, sym); } else { - return new InvisibleSymbolError(env, suppressError, sym); + return new InvisibleSymbolError(env, false, sym); } }