1434 * (not defined for Method and ForAll types). |
1434 * (not defined for Method and ForAll types). |
1435 */ |
1435 */ |
1436 public boolean isCastable(Type t, Type s, Warner warn) { |
1436 public boolean isCastable(Type t, Type s, Warner warn) { |
1437 if (t == s) |
1437 if (t == s) |
1438 return true; |
1438 return true; |
1439 |
1439 if (t.isPrimitive() != s.isPrimitive()) { |
1440 if (t.isPrimitive() != s.isPrimitive()) |
1440 t = skipTypeVars(t, false); |
1441 return (isConvertible(t, s, warn) |
1441 return (isConvertible(t, s, warn) |
1442 || (allowObjectToPrimitiveCast && |
1442 || (allowObjectToPrimitiveCast && |
1443 s.isPrimitive() && |
1443 s.isPrimitive() && |
1444 isSubtype(boxedClass(s).type, t))); |
1444 isSubtype(boxedClass(s).type, t))); |
|
1445 } |
1445 if (warn != warnStack.head) { |
1446 if (warn != warnStack.head) { |
1446 try { |
1447 try { |
1447 warnStack = warnStack.prepend(warn); |
1448 warnStack = warnStack.prepend(warn); |
1448 checkUnsafeVarargsConversion(t, s, warn); |
1449 checkUnsafeVarargsConversion(t, s, warn); |
1449 return isCastable.visit(t,s); |
1450 return isCastable.visit(t,s); |