src/share/classes/com/sun/tools/javac/comp/Resolve.java

changeset 1581
4ff468de829d
parent 1551
8cdd96f2fdb9
child 1588
2620c953e9fe
     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

mercurial