diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 0295439095f..177ca2cac54 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -1662,6 +1662,7 @@ public class ExpressionCodegen extends JetVisitor implem int index = myFrameMap.enter(variableDescriptor, type); if (isSharedVarType(type)) { + markLineNumber(statement, false); v.anew(type); v.dup(); v.invokespecial(type.getInternalName(), "", "()V", false); diff --git a/idea/testData/debugger/tinyApp/outs/ifCapturedVariableKt9118.out b/idea/testData/debugger/tinyApp/outs/ifCapturedVariableKt9118.out new file mode 100644 index 00000000000..b4c7b55cf94 --- /dev/null +++ b/idea/testData/debugger/tinyApp/outs/ifCapturedVariableKt9118.out @@ -0,0 +1,8 @@ +LineBreakpoint created at ifCapturedVariableKt9118.kt:5 +!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ifCapturedVariableKt9118.IfCapturedVariableKt9118Package +Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' +ifCapturedVariableKt9118.kt:5 +ifCapturedVariableKt9118.kt:8 +Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' + +Process finished with exit code 0 diff --git a/idea/testData/debugger/tinyApp/src/stepping/stepOver/ifCapturedVariableKt9118.kt b/idea/testData/debugger/tinyApp/src/stepping/stepOver/ifCapturedVariableKt9118.kt new file mode 100644 index 00000000000..37711285f7f --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/stepping/stepOver/ifCapturedVariableKt9118.kt @@ -0,0 +1,16 @@ +package ifCapturedVariableKt9118 + +fun main(args: Array) { + //Breakpoint! + if (1 > 2) { + println() + } + var isCompiledDataFromCache = true + foo { + isCompiledDataFromCache = false + } +} + +fun foo(f: () -> Unit) { + f() +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java index a61cb27d9a4..28003635e60 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java @@ -337,6 +337,12 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/debugger/tinyApp/src/stepping/stepOver"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("ifCapturedVariableKt9118.kt") + public void testIfCapturedVariableKt9118() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/stepOver/ifCapturedVariableKt9118.kt"); + doStepOverTest(fileName); + } + @TestMetadata("stepOverInlinedLambda.kt") public void testStepOverInlinedLambda() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/stepOver/stepOverInlinedLambda.kt");