KT-753 shift operations have second arg Int

This commit is contained in:
Alex Tkachman
2011-12-05 17:13:10 +02:00
parent 91549ed359
commit b253529e27
3 changed files with 25 additions and 4 deletions
@@ -5,6 +5,7 @@ import org.jetbrains.jet.codegen.ExpressionCodegen;
import org.jetbrains.jet.codegen.JetTypeMapper;
import org.jetbrains.jet.codegen.StackValue;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.Type;
import org.objectweb.asm.commons.InstructionAdapter;
@@ -31,11 +32,11 @@ public class BinaryOp implements IntrinsicMethod {
if (receiver != null) {
receiver.put(expectedType, v);
}
codegen.gen(arguments.get(0), expectedType);
codegen.gen(arguments.get(0), shift() ? Type.INT_TYPE : expectedType);
}
else {
codegen.gen(arguments.get(0), expectedType);
codegen.gen(arguments.get(1), expectedType);
codegen.gen(arguments.get(1), shift() ? Type.INT_TYPE : expectedType);
}
v.visitInsn(expectedType.getOpcode(opcode));
@@ -44,4 +45,8 @@ public class BinaryOp implements IntrinsicMethod {
}
return StackValue.onStack(expectedType);
}
private boolean shift() {
return opcode == Opcodes.ISHL || opcode == Opcodes.ISHR || opcode == Opcodes.IUSHR;
}
}
@@ -0,0 +1,11 @@
namespace bitwise_demo
fun Long?.shl(bits : Int?) : Long = this.sure().shl(bits.sure())
fun box() : String {
val x : Long? = 10
val y : Int? = 12
System.out?.println(x.shl(y))
return "OK"
}
@@ -317,7 +317,7 @@ public class PrimitiveTypesTest extends CodegenTestCase {
public void testKt737() throws Exception {
loadText("fun box() = if(3.compareTo(2) != 1) \"fail\" else if(5.byt.compareTo(10.lng) >= 0) \"fail\" else \"OK\"");
System.out.println(generateToText());
// System.out.println(generateToText());
assertEquals("OK", blackBox());
}
@@ -340,6 +340,11 @@ public class PrimitiveTypesTest extends CodegenTestCase {
public void testKt752 () {
blackBoxFile("regressions/kt752.jet");
System.out.println(generateToText());
// System.out.println(generateToText());
}
public void testKt753 () {
blackBoxFile("regressions/kt753.jet");
// System.out.println(generateToText());
}
}