KT-711 primitive value in left side of elvis operator
This commit is contained in:
@@ -1693,6 +1693,12 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
||||
final Type exprType = expressionType(expression);
|
||||
final Type leftType = expressionType(expression.getLeft());
|
||||
gen(expression.getLeft(), leftType);
|
||||
if(leftType.getSort() != Type.OBJECT && leftType.getSort() != Type.ARRAY) {
|
||||
if(leftType != exprType) {
|
||||
StackValue.onStack(leftType).put(exprType, v);
|
||||
}
|
||||
return StackValue.onStack(exprType);
|
||||
}
|
||||
v.dup();
|
||||
Label end = new Label();
|
||||
Label ifNull = new Label();
|
||||
|
||||
@@ -285,6 +285,12 @@ public class PrimitiveTypesTest extends CodegenTestCase {
|
||||
blackBoxFile("regressions/kt518.jet");
|
||||
}
|
||||
|
||||
public void testKt711 () throws Exception {
|
||||
loadText("fun box() = if ((1 ?: 0) == 1) \"OK\" else \"fail\"");
|
||||
// System.out.println(generateToText());
|
||||
blackBox();
|
||||
}
|
||||
|
||||
public void testKt665() throws Exception {
|
||||
loadText("fun f(x: Long, zzz: Long = 1): Long\n" +
|
||||
"{\n" +
|
||||
|
||||
Reference in New Issue
Block a user