From 59a349a4ae0da34c2f505a5bf91adf9de828d8f0 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 21 Nov 2016 14:38:50 +0300 Subject: [PATCH] Test breakpoint is hit inside crossinline lambda called from anonymous object (KT-12612) #KT-12612 Fixed --- ...pInLabdaOfCrossinlineCalledInAnonymous.out | 8 +++++ ...opInLabdaOfCrossinlineCalledInAnonymous.kt | 30 +++++++++++++++++++ .../debugger/KotlinSteppingTestGenerated.java | 6 ++++ 3 files changed, 44 insertions(+) create mode 100644 idea/testData/debugger/tinyApp/outs/stopInLabdaOfCrossinlineCalledInAnonymous.out create mode 100644 idea/testData/debugger/tinyApp/src/stepping/stepOver/stopInLabdaOfCrossinlineCalledInAnonymous.kt diff --git a/idea/testData/debugger/tinyApp/outs/stopInLabdaOfCrossinlineCalledInAnonymous.out b/idea/testData/debugger/tinyApp/outs/stopInLabdaOfCrossinlineCalledInAnonymous.out new file mode 100644 index 00000000000..192fbfefec9 --- /dev/null +++ b/idea/testData/debugger/tinyApp/outs/stopInLabdaOfCrossinlineCalledInAnonymous.out @@ -0,0 +1,8 @@ +LineBreakpoint created at stopInLabdaOfCrossinlineCalledInAnonymous.kt:21 +!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! stopInLabdaOfCrossinlineCalledInAnonymous.StopInLabdaOfCrossinlineCalledInAnonymousKt +Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' +stopInLabdaOfCrossinlineCalledInAnonymous.kt:21 +stopInLabdaOfCrossinlineCalledInAnonymous.kt:22 +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/stopInLabdaOfCrossinlineCalledInAnonymous.kt b/idea/testData/debugger/tinyApp/src/stepping/stepOver/stopInLabdaOfCrossinlineCalledInAnonymous.kt new file mode 100644 index 00000000000..733ee81afca --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/stepping/stepOver/stopInLabdaOfCrossinlineCalledInAnonymous.kt @@ -0,0 +1,30 @@ +package stopInLabdaOfCrossinlineCalledInAnonymous + +// KT-12612 + +class C {} +interface D { + fun run() +} + +inline fun C.bar(crossinline lambda: () -> Unit) { + object: D { + override fun run() { + lambda() + } + }.run() +} + +fun foo(c: C) { + c.bar { + //Breakpoint! + nop() + nop() + } +} + +fun main(args: Array) { + foo(C()) +} + +fun nop() {} \ 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 76c979e4067..44f29fdc67b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/KotlinSteppingTestGenerated.java @@ -721,6 +721,12 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/stepOver/stopInInlineInOtherFileWithLambdaArgumentDex.kt"); doStepOverTest(fileName); } + + @TestMetadata("stopInLabdaOfCrossinlineCalledInAnonymous.kt") + public void testStopInLabdaOfCrossinlineCalledInAnonymous() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/stepOver/stopInLabdaOfCrossinlineCalledInAnonymous.kt"); + doStepOverTest(fileName); + } } @TestMetadata("idea/testData/debugger/tinyApp/src/stepping/filters")