1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java Fri Feb 15 16:28:57 2013 +0000 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java Fri Feb 15 16:29:58 2013 +0000 1.3 @@ -2501,10 +2501,10 @@ 1.4 1.5 //merge results 1.6 Pair<Symbol, ReferenceLookupHelper> res; 1.7 - if (unboundSym.kind != MTH) { 1.8 + if (!lookupSuccess(unboundSym)) { 1.9 res = new Pair<Symbol, ReferenceLookupHelper>(boundSym, boundLookupHelper); 1.10 env.info.pendingResolutionPhase = boundEnv.info.pendingResolutionPhase; 1.11 - } else if (boundSym.kind == MTH) { 1.12 + } else if (lookupSuccess(boundSym)) { 1.13 res = new Pair<Symbol, ReferenceLookupHelper>(ambiguityError(boundSym, unboundSym), boundLookupHelper); 1.14 env.info.pendingResolutionPhase = boundEnv.info.pendingResolutionPhase; 1.15 } else { 1.16 @@ -2514,6 +2514,10 @@ 1.17 1.18 return res; 1.19 } 1.20 + //private 1.21 + boolean lookupSuccess(Symbol s) { 1.22 + return s.kind == MTH || s.kind == AMBIGUOUS; 1.23 + } 1.24 1.25 /** 1.26 * Helper for defining custom method-like lookup logic; a lookup helper 1.27 @@ -2706,9 +2710,11 @@ 1.28 1.29 UnboundMethodReferenceLookupHelper(JCMemberReference referenceTree, Name name, Type site, 1.30 List<Type> argtypes, List<Type> typeargtypes, MethodResolutionPhase maxPhase) { 1.31 - super(referenceTree, name, 1.32 - site.isRaw() ? types.asSuper(argtypes.head, site.tsym) : site, 1.33 - argtypes.tail, typeargtypes, maxPhase); 1.34 + super(referenceTree, name, site, argtypes.tail, typeargtypes, maxPhase); 1.35 + Type asSuperSite = types.asSuper(argtypes.head, site.tsym); 1.36 + if (site.isRaw() && !asSuperSite.isErroneous()) { 1.37 + this.site = asSuperSite; 1.38 + } 1.39 } 1.40 1.41 @Override