Fixing failed tests: do not report anything on casts that can never succeed

This commit is contained in:
Andrey Breslav
2013-09-04 16:32:47 +04:00
parent e3079ac667
commit e3175c66e8
11 changed files with 26 additions and 26 deletions
@@ -221,21 +221,21 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
if (!CastDiagnosticsUtil.isCastPossible(actualType, targetType, platformToKotlinClassMap)) {
context.trace.report(CAST_NEVER_SUCCEEDS.on(expression.getOperationReference()));
}
JetTypeChecker typeChecker = JetTypeChecker.INSTANCE;
if (!typeChecker.isSubtypeOf(targetType, actualType)) {
if (typeChecker.isSubtypeOf(actualType, targetType)) {
context.trace.report(USELESS_CAST_STATIC_ASSERT_IS_FINE.on(expression.getOperationReference()));
}
}
else {
JetTypeChecker typeChecker = JetTypeChecker.INSTANCE;
// Upcast?
if (typeChecker.isSubtypeOf(actualType, targetType)) {
context.trace.report(USELESS_CAST.on(expression.getOperationReference()));
}
else {
if (CastDiagnosticsUtil.isCastErased(actualType, targetType, typeChecker)) {
context.trace.report(Errors.UNCHECKED_CAST.on(expression, actualType, targetType));
if (!typeChecker.isSubtypeOf(targetType, actualType)) {
// proper upcast: String as Any
context.trace.report(USELESS_CAST_STATIC_ASSERT_IS_FINE.on(expression.getOperationReference()));
}
else {
// cast to itself: String as String
context.trace.report(USELESS_CAST.on(expression.getOperationReference()));
}
}
else if (CastDiagnosticsUtil.isCastErased(actualType, targetType, typeChecker)) {
context.trace.report(Errors.UNCHECKED_CAST.on(expression, actualType, targetType));
}
}
}