Value classes: Forbid any identity equality check on value class

#KT-31130 Fixed
This commit is contained in:
Ilmir Usmanov
2020-12-09 13:43:51 +01:00
parent 7e088457a2
commit 775d610045
6 changed files with 38 additions and 10 deletions
@@ -1110,13 +1110,13 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
if (KotlinBuiltIns.isPrimitiveType(leftType)) {
context.trace.report(DEPRECATED_IDENTITY_EQUALS.on(expression, leftType, rightType));
}
else if (InlineClassesUtilsKt.isInlineClassType(leftType)) {
context.trace.report(FORBIDDEN_IDENTITY_EQUALS.on(expression, leftType, rightType));
}
}
else if (isIdentityComparedWithImplicitBoxing(leftType, rightType) || isIdentityComparedWithImplicitBoxing(rightType, leftType)) {
context.trace.report(IMPLICIT_BOXING_IN_IDENTITY_EQUALS.on(expression, leftType, rightType));
}
if (InlineClassesUtilsKt.isInlineClassType(leftType) || InlineClassesUtilsKt.isInlineClassType(rightType)) {
context.trace.report(FORBIDDEN_IDENTITY_EQUALS.on(expression, leftType, rightType));
}
}
private static boolean isIdentityComparedWithImplicitBoxing(KotlinType leftType, KotlinType rightType) {