KT-757 wrong inv() for long
This commit is contained in:
@@ -11,12 +11,18 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author yole
|
* @author yole
|
||||||
|
* @author alex.tkachman
|
||||||
*/
|
*/
|
||||||
public class Inv implements IntrinsicMethod {
|
public class Inv implements IntrinsicMethod {
|
||||||
@Override
|
@Override
|
||||||
public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List<JetExpression> arguments, StackValue receiver) {
|
public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType, PsiElement element, List<JetExpression> arguments, StackValue receiver) {
|
||||||
receiver.put(expectedType, v);
|
receiver.put(expectedType, v);
|
||||||
v.iconst(-1);
|
if(expectedType == Type.LONG_TYPE) {
|
||||||
|
v.lconst(-1L);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
v.iconst(-1);
|
||||||
|
}
|
||||||
v.xor(expectedType);
|
v.xor(expectedType);
|
||||||
return StackValue.onStack(expectedType);
|
return StackValue.onStack(expectedType);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace demo_long
|
||||||
|
|
||||||
|
fun Long?.inv() : Long = this.sure().inv()
|
||||||
|
|
||||||
|
fun box() : String {
|
||||||
|
val x : Long? = 10
|
||||||
|
System.out?.println(x.inv())
|
||||||
|
return if(x.inv() == -11.lng) "OK" else "fail"
|
||||||
|
}
|
||||||
@@ -350,6 +350,11 @@ public class PrimitiveTypesTest extends CodegenTestCase {
|
|||||||
|
|
||||||
public void testKt684 () {
|
public void testKt684 () {
|
||||||
blackBoxFile("regressions/kt684.jet");
|
blackBoxFile("regressions/kt684.jet");
|
||||||
|
// System.out.println(generateToText());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testKt757 () {
|
||||||
|
blackBoxFile("regressions/kt757.jet");
|
||||||
// System.out.println(generateToText());
|
// System.out.println(generateToText());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user