--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Thu Jun 28 17:49:13 2018 -0700
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Fri Jun 29 10:41:10 2018 +0200
@@ -2560,8 +2560,8 @@
}
@Override
- protected Type typeOf(DeferredType dt) {
- Type res = super.typeOf(dt);
+ protected Type typeOf(DeferredType dt, Type pt) {
+ Type res = super.typeOf(dt, pt);
if (!res.isErroneous()) {
switch (TreeInfo.skipParens(dt.tree).getTag()) {
case LAMBDA:
@@ -3992,7 +3992,12 @@
@Override
public Symbol access(Name name, TypeSymbol location) {
- return types.createErrorType(name, location, syms.errSymbol.type).tsym;
+ Symbol sym = bestCandidate();
+ return types.createErrorType(name, location, sym != null ? sym.type : syms.errSymbol.type).tsym;
+ }
+
+ protected Symbol bestCandidate() {
+ return errCandidate().fst;
}
protected Pair<Symbol, JCDiagnostic> errCandidate() {
@@ -4123,6 +4128,16 @@
//conform to source order
return details;
}
+
+ @Override
+ protected Symbol bestCandidate() {
+ Map<Symbol, JCDiagnostic> candidatesMap = mapCandidates();
+ Map<Symbol, JCDiagnostic> filteredCandidates = filterCandidates(candidatesMap);
+ if (filteredCandidates.size() == 1) {
+ return filteredCandidates.keySet().iterator().next();
+ }
+ return null;
+ }
}
/**