From a1582e19110bd9bd7a8cbd76ece42b04c92b9905 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Mon, 2 Apr 2012 13:40:19 +0300 Subject: [PATCH] fix for tests broken by previous commit --- .../jet/codegen/intrinsics/IdentityEquals.java | 13 +++++++++++-- compiler/testData/codegen/regressions/kt1093.kt | 6 +++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IdentityEquals.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IdentityEquals.java index 062475d49f8..801d4d845fa 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IdentityEquals.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IdentityEquals.java @@ -22,6 +22,7 @@ import org.jetbrains.jet.codegen.ExpressionCodegen; import org.jetbrains.jet.codegen.GenerationState; import org.jetbrains.jet.codegen.JetTypeMapper; import org.jetbrains.jet.codegen.StackValue; +import org.jetbrains.jet.lang.psi.JetBinaryExpression; import org.jetbrains.jet.lang.psi.JetCallExpression; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.resolve.BindingContext; @@ -38,8 +39,16 @@ import java.util.List; public class IdentityEquals implements IntrinsicMethod { @Override public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List arguments, StackValue receiver, @NotNull GenerationState state) { - receiver.put(JetTypeMapper.TYPE_OBJECT, v); - codegen.gen(arguments.get(0)).put(JetTypeMapper.TYPE_OBJECT, v); + if(element instanceof JetCallExpression) { + receiver.put(JetTypeMapper.TYPE_OBJECT, v); + codegen.gen(arguments.get(0)).put(JetTypeMapper.TYPE_OBJECT, v); + } + else { + assert element instanceof JetBinaryExpression; + JetBinaryExpression e = (JetBinaryExpression)element; + codegen.gen(e.getLeft()).put(JetTypeMapper.TYPE_OBJECT, v); + codegen.gen(e.getRight()).put(JetTypeMapper.TYPE_OBJECT, v); + } return StackValue.cmp(JetTokens.EQEQEQ, JetTypeMapper.TYPE_OBJECT); } } diff --git a/compiler/testData/codegen/regressions/kt1093.kt b/compiler/testData/codegen/regressions/kt1093.kt index e265e99242f..796bb26457c 100644 --- a/compiler/testData/codegen/regressions/kt1093.kt +++ b/compiler/testData/codegen/regressions/kt1093.kt @@ -1,8 +1,8 @@ val f : (Any) -> String = { it.toString() } fun box() : String { - if(!(f identityEquals f)) return "fail" - if(!(f == f)) return "fail" - if(!(f equals f)) return "fail" + if(!(f identityEquals f)) return "fail 1" + if(!(f == f)) return "fail 2" + if(!(f equals f)) return "fail 3" return "OK" }