From 261ced59c500516d5ba252b37faa31be1c1da1b1 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Fri, 19 Dec 2014 15:22:13 +0300 Subject: [PATCH] Correct labels for local variables --- .../extractFunctionForDebuggerUtil.kt | 6 ++++- .../tinyApp/outs/frameClosingBracket.out | 23 +++++++++++++++++++ .../frame/frameClosingBracket.kt | 10 ++++++++ ...KotlinEvaluateExpressionTestGenerated.java | 6 +++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 idea/testData/debugger/tinyApp/outs/frameClosingBracket.out create mode 100644 idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/frame/frameClosingBracket.kt diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/extractFunctionForDebuggerUtil.kt b/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/extractFunctionForDebuggerUtil.kt index 318a001a4e9..1b787f63ce9 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/extractFunctionForDebuggerUtil.kt +++ b/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/extractFunctionForDebuggerUtil.kt @@ -205,7 +205,11 @@ private fun addDebugExpressionBeforeContextElement(codeFragment: JetCodeFragment } contextElement is JetDeclarationWithBody && contextElement.hasBlockBody()-> { val block = contextElement.getBodyExpression() as JetBlockExpression - block.getStatements().firstOrNull() ?: block.getLastChild() + val last = block.getStatements().lastOrNull() + if (last is JetReturnExpression) + last + else + block.getRBrace() } contextElement is JetWhenEntry -> { val entryExpression = contextElement.getExpression() diff --git a/idea/testData/debugger/tinyApp/outs/frameClosingBracket.out b/idea/testData/debugger/tinyApp/outs/frameClosingBracket.out new file mode 100644 index 00000000000..1f20949c1c5 --- /dev/null +++ b/idea/testData/debugger/tinyApp/outs/frameClosingBracket.out @@ -0,0 +1,23 @@ +LineBreakpoint created at frameClosingBracket.kt:6 +!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! frameClosingBracket.FrameClosingBracketPackage +Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' +frameClosingBracket.kt:6 +Compile bytecode for a +package frameClosingBracket + +fun main(args: Array) { + val a = 1 + //Breakpoint! +} + +// PRINT_FRAME +// EXPRESSION: a +// RESULT: 1: I + + frame = main():6, FrameClosingBracketPackage$@packagePartHASH {frameClosingBracket} + static = static = frameClosingBracket.FrameClosingBracketPackage$@packagePartHASH + local = args: java.lang.String[] = {java.lang.String[0]@uniqueID} + local = a: int = 1 +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/evaluate/singleBreakpoint/frame/frameClosingBracket.kt b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/frame/frameClosingBracket.kt new file mode 100644 index 00000000000..6b2ce538b2b --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/frame/frameClosingBracket.kt @@ -0,0 +1,10 @@ +package frameClosingBracket + +fun main(args: Array) { + val a = 1 + //Breakpoint! +} + +// PRINT_FRAME +// EXPRESSION: a +// RESULT: 1: I diff --git a/idea/tests/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java index 0de3a3f633b..586fece8cc2 100644 --- a/idea/tests/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java @@ -240,6 +240,12 @@ public class KotlinEvaluateExpressionTestGenerated extends AbstractKotlinEvaluat doSingleBreakpointTest(fileName); } + @TestMetadata("frameClosingBracket.kt") + public void testFrameClosingBracket() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/frame/frameClosingBracket.kt"); + doSingleBreakpointTest(fileName); + } + @TestMetadata("frameExtFunExtFun.kt") public void testFrameExtFunExtFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/frame/frameExtFunExtFun.kt");