diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 73b610a343c..5a49bdf5475 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1690,7 +1690,7 @@ public class ExpressionCodegen extends JetVisitor { } public StackValue generateEqualsForExpressionsOnStack(IElementType opToken, Type leftType, Type rightType, boolean leftNullable, boolean rightNullable) { - if (isNumberPrimitive(leftType) && leftType == rightType) { + if ((isNumberPrimitive(leftType) || leftType.getSort() == Type.BOOLEAN) && leftType == rightType) { return compareExpressionsOnStack(opToken, leftType); } else { diff --git a/compiler/testData/codegen/regressions/kt1054.kt b/compiler/testData/codegen/regressions/kt1054.kt new file mode 100644 index 00000000000..49207ebb1d5 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt1054.kt @@ -0,0 +1,17 @@ +fun box() : String { + return if(true.and(true)) "OK" else "fail" +} + +fun Boolean.and(other : Boolean) : Boolean{ + if(other == true) { + if(this == true){ + return true ; + } + else{ + return false; + } + } + else { + return false; + } +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java index 3dedbb19755..ccc2b7332bc 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java @@ -395,4 +395,8 @@ public class PrimitiveTypesTest extends CodegenTestCase { public void testKt1055 () { blackBoxFile("regressions/kt1055.kt"); } + + public void testKt1054 () { + blackBoxFile("regressions/kt1054.kt"); + } }