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

changeset 1599
9f0ec00514b6
parent 1588
2620c953e9fe
child 1609
332f23993353
equal deleted inserted replaced
1598:7ac9242d2ca6 1599:9f0ec00514b6
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

mercurial