1242 Symbol bestSoFar, |
1242 Symbol bestSoFar, |
1243 boolean allowBoxing, |
1243 boolean allowBoxing, |
1244 boolean useVarargs, |
1244 boolean useVarargs, |
1245 boolean operator) { |
1245 boolean operator) { |
1246 if (sym.kind == ERR || |
1246 if (sym.kind == ERR || |
1247 !sym.isInheritedIn(site.tsym, types) || |
1247 !sym.isInheritedIn(site.tsym, types)) { |
1248 (useVarargs && (sym.flags() & VARARGS) == 0)) { |
|
1249 return bestSoFar; |
1248 return bestSoFar; |
|
1249 } else if (useVarargs && (sym.flags() & VARARGS) == 0) { |
|
1250 return bestSoFar.kind >= ERRONEOUS ? |
|
1251 new BadVarargsMethod((ResolveError)bestSoFar) : |
|
1252 bestSoFar; |
1250 } |
1253 } |
1251 Assert.check(sym.kind < AMBIGUOUS); |
1254 Assert.check(sym.kind < AMBIGUOUS); |
1252 try { |
1255 try { |
1253 Type mt = rawInstantiate(env, site, sym, null, argtypes, typeargtypes, |
1256 Type mt = rawInstantiate(env, site, sym, null, argtypes, typeargtypes, |
1254 allowBoxing, useVarargs, resolveMethodCheck, types.noWarnings); |
1257 allowBoxing, useVarargs, resolveMethodCheck, types.noWarnings); |
3520 types.createErrorType(name, location, firstAmbiguity.type).tsym : |
3523 types.createErrorType(name, location, firstAmbiguity.type).tsym : |
3521 firstAmbiguity; |
3524 firstAmbiguity; |
3522 } |
3525 } |
3523 } |
3526 } |
3524 |
3527 |
|
3528 class BadVarargsMethod extends ResolveError { |
|
3529 |
|
3530 ResolveError delegatedError; |
|
3531 |
|
3532 BadVarargsMethod(ResolveError delegatedError) { |
|
3533 super(delegatedError.kind, "badVarargs"); |
|
3534 this.delegatedError = delegatedError; |
|
3535 } |
|
3536 |
|
3537 @Override |
|
3538 protected Symbol access(Name name, TypeSymbol location) { |
|
3539 return delegatedError.access(name, location); |
|
3540 } |
|
3541 |
|
3542 @Override |
|
3543 public boolean exists() { |
|
3544 return true; |
|
3545 } |
|
3546 |
|
3547 @Override |
|
3548 JCDiagnostic getDiagnostic(DiagnosticType dkind, DiagnosticPosition pos, Symbol location, Type site, Name name, List<Type> argtypes, List<Type> typeargtypes) { |
|
3549 return delegatedError.getDiagnostic(dkind, pos, location, site, name, argtypes, typeargtypes); |
|
3550 } |
|
3551 } |
|
3552 |
3525 enum MethodResolutionPhase { |
3553 enum MethodResolutionPhase { |
3526 BASIC(false, false), |
3554 BASIC(false, false), |
3527 BOX(true, false), |
3555 BOX(true, false), |
3528 VARARITY(true, true) { |
3556 VARARITY(true, true) { |
3529 @Override |
3557 @Override |