diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 0e0381ba4a8..e84cac2d840 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -3094,7 +3094,7 @@ public class ExpressionCodegen extends JetVisitor implem Type type = expressionType(expression.getBaseExpression()); value.put(type, v); - callableMethod.invokeWithNotNullAssertion(v, state, resolvedCall); + invokeFunction(resolvedCall, StackValue.onStack(type)); value.store(callableMethod.getReturnType(), v); value.put(type, v); @@ -3163,8 +3163,8 @@ public class ExpressionCodegen extends JetVisitor implem else { ResolvedCall resolvedCall = getResolvedCallWithAssert(expression, bindingContext); Callable callable = resolveToCallable((FunctionDescriptor) op, false); + invokeFunction(resolvedCall, StackValue.onStack(type)); CallableMethod callableMethod = (CallableMethod) callable; - callableMethod.invokeWithNotNullAssertion(v, state, resolvedCall); storeType = callableMethod.getReturnType(); } diff --git a/compiler/testData/codegen/box/extensionFunctions/kt3969.kt b/compiler/testData/codegen/box/extensionFunctions/kt3969.kt new file mode 100644 index 00000000000..95930acb52a --- /dev/null +++ b/compiler/testData/codegen/box/extensionFunctions/kt3969.kt @@ -0,0 +1,19 @@ +var result = "Fail" + +class A + +fun A.inc(s: String = "OK"): A { + result = s + return this +} + +fun box(): String { + var a = A() + a++ + if (result != "OK") return "Fail 1" + + result = "Fail" + ++a + + return result +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index 46538827d7e..201f48c9a39 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -2777,6 +2777,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("kt3969.kt") + public void testKt3969() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/extensionFunctions/kt3969.kt"); + doTest(fileName); + } + @TestMetadata("kt4118.kt") public void testKt4118() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/extensionFunctions/kt4118.kt");