fix for tests broken by previous commit

This commit is contained in:
Alex Tkachman
2012-04-02 13:40:19 +03:00
parent a4ebbaa1a0
commit a1582e1911
2 changed files with 14 additions and 5 deletions
@@ -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<JetExpression> 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);
}
}
@@ -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"
}