diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 3f6774baa92..2d719a3c26e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1425,7 +1425,11 @@ public class ExpressionCodegen extends JetVisitor { for (ValueArgument argument : expression.getValueArguments()) { args.add(argument.getArgumentExpression()); } - return intrinsic.generate(this, v, expressionType(expression), expression, args, receiver, state); + Type callType = typeMapper.mapType(resolvedCall.getCandidateDescriptor().getReturnType(),MapTypeMode.VALUE); + Type exprType = expressionType(expression); + StackValue stackValue = intrinsic.generate(this, v, callType, expression, args, receiver, state); + stackValue.put(exprType,v); + return StackValue.onStack(exprType); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index a04cf32445a..11e8445e0e9 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -84,7 +84,6 @@ public class JetTypeMapper { public static final Type TYPE_FUNCTION0 = Type.getObjectType("jet/Function0"); public static final Type TYPE_FUNCTION1 = Type.getObjectType("jet/Function1"); - private JetStandardLibrary standardLibrary1; public BindingContext bindingContext; private ClosureAnnotator closureAnnotator; private boolean mapBuiltinsToJava; diff --git a/compiler/testData/codegen/regressions/kt2275.kt b/compiler/testData/codegen/regressions/kt2275.kt new file mode 100644 index 00000000000..997ee20552f --- /dev/null +++ b/compiler/testData/codegen/regressions/kt2275.kt @@ -0,0 +1,6 @@ +import java.util.HashMap + +fun main(args: Array) { + (0.toLong() as Number?)?.toByte() + (0 as Int?)?.toDouble() +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java index 16c1afcc361..f20d4e1406f 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java @@ -443,6 +443,9 @@ public class PrimitiveTypesTest extends CodegenTestCase { public void testKt2269() { blackBoxFile("regressions/kt2269.kt"); - System.out.println(generateToText()); + } + + public void testKt2275() { + blackBoxFile("regressions/kt2275.kt"); } }