From 98ee83f4a3ca5e584ea5775e710a095522ec0150 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 14 Jul 2017 09:56:01 +0300 Subject: [PATCH] Minor: move condition for boxed==primitive to corresponding isApplicable --- .../codegen/BoxedVsPrimitiveBranchedValues.kt | 23 ++++++++++--------- .../kotlin/codegen/ExpressionCodegen.java | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/BoxedVsPrimitiveBranchedValues.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/BoxedVsPrimitiveBranchedValues.kt index 439e252b144..f288c8ed2d4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/BoxedVsPrimitiveBranchedValues.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/BoxedVsPrimitiveBranchedValues.kt @@ -217,9 +217,9 @@ class BoxedToPrimitiveEquality private constructor( companion object { @JvmStatic - fun create(opToken: IElementType, leftBoxed: StackValue, rightPrimitive: StackValue, primitiveType: Type): BranchedValue = - if (!isApplicable(opToken, primitiveType)) - throw IllegalArgumentException("Not applicable for $opToken, $primitiveType") + fun create(opToken: IElementType, leftBoxed: StackValue, leftType: Type, rightPrimitive: StackValue, primitiveType: Type): BranchedValue = + if (!isApplicable(opToken, leftType, primitiveType)) + throw IllegalArgumentException("Not applicable for $opToken, $leftType, $primitiveType") else when (opToken) { KtTokens.EQEQ -> BoxedToPrimitiveEquality(leftBoxed, rightPrimitive, primitiveType) KtTokens.EXCLEQ -> Invert(BoxedToPrimitiveEquality(leftBoxed, rightPrimitive, primitiveType)) @@ -227,16 +227,17 @@ class BoxedToPrimitiveEquality private constructor( } @JvmStatic - fun isApplicable(opToken: IElementType, primitiveType: Type) = + fun isApplicable(opToken: IElementType, leftType: Type, rightType: Type) = (opToken == KtTokens.EQEQ || opToken == KtTokens.EXCLEQ ) && - (primitiveType == Type.BOOLEAN_TYPE || - primitiveType == Type.CHAR_TYPE || - primitiveType == Type.BYTE_TYPE || - primitiveType == Type.SHORT_TYPE || - primitiveType == Type.INT_TYPE || - primitiveType == Type.LONG_TYPE - ) + (rightType == Type.BOOLEAN_TYPE || + rightType == Type.CHAR_TYPE || + rightType == Type.BYTE_TYPE || + rightType == Type.SHORT_TYPE || + rightType == Type.INT_TYPE || + rightType == Type.LONG_TYPE + ) && + AsmUtil.isBoxedTypeOf(leftType, rightType) } } \ No newline at end of file diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index c962062de7d..8ce28315537 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -2895,8 +2895,8 @@ public class ExpressionCodegen extends KtVisitor impleme return genCmpPrimitiveToSafeCall(left, leftType, (KtSafeQualifiedExpression) right, opToken); } - if (isBoxedTypeOf(leftType, rightType) && BoxedToPrimitiveEquality.isApplicable(opToken, rightType)) { - return BoxedToPrimitiveEquality.create(opToken, genLazy(left, leftType), genLazy(right, rightType), rightType); + if (BoxedToPrimitiveEquality.isApplicable(opToken, leftType, rightType)) { + return BoxedToPrimitiveEquality.create(opToken, genLazy(left, leftType), leftType, genLazy(right, rightType), rightType); } if (isPrimitive(leftType) != isPrimitive(rightType)) {