diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt index 0564d96ff86..c88c5e67493 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt @@ -490,7 +490,7 @@ class KotlinPositionManager(private val myDebugProcess: DebugProcess) : MultiReq private fun findCrossInlineArguments(argument: KtFunction, parameterDescriptor: ValueParameterDescriptor, context: BindingContext): Set { return runReadAction { - val source = parameterDescriptor.source.getPsi() as? KtParameter + val source = parameterDescriptor.original.source.getPsi() as? KtParameter val functionName = source?.ownerFunction?.name if (functionName != null) { return@runReadAction setOf(getCrossInlineArgumentClassName(argument, functionName, context)) diff --git a/idea/testData/debugger/tinyApp/outs/genericCrossinlineArgument.out b/idea/testData/debugger/tinyApp/outs/genericCrossinlineArgument.out new file mode 100644 index 00000000000..d0de2bb4036 --- /dev/null +++ b/idea/testData/debugger/tinyApp/outs/genericCrossinlineArgument.out @@ -0,0 +1,7 @@ +LineBreakpoint created at genericCrossinlineArgument.kt:14 +!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! genericCrossinlineArgument.GenericCrossinlineArgumentKt +Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' +genericCrossinlineArgument.kt:14 +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/genericCrossinlineArgument.kt b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/genericCrossinlineArgument.kt new file mode 100644 index 00000000000..cff0bfc60aa --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/genericCrossinlineArgument.kt @@ -0,0 +1,16 @@ +package genericCrossinlineArgument + +interface A { + fun expr(): Boolean +} + +inline fun test1(t: T, crossinline formula: T.() -> Boolean) = object : A { + override fun expr() = formula(t) +} + +fun main(args: Array) { + test1("aaa") { + //Breakpoint! + 1 + 1 > 0 + }.expr() +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java index 5255adf8178..3f4a329db90 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java @@ -157,6 +157,12 @@ public class KotlinEvaluateExpressionTestGenerated extends AbstractKotlinEvaluat doSingleBreakpointTest(fileName); } + @TestMetadata("genericCrossinlineArgument.kt") + public void testGenericCrossinlineArgument() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/genericCrossinlineArgument.kt"); + doSingleBreakpointTest(fileName); + } + @TestMetadata("imports.kt") public void testImports() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/imports.kt");