Skip to content

Commit 4b6255c

Browse files
Debugger: fix breakpoints inside generic crossinline argument body
#KT-11848 Fixed
1 parent 411c1ff commit 4b6255c

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

idea/src/org/jetbrains/kotlin/idea/debugger/KotlinPositionManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ class KotlinPositionManager(private val myDebugProcess: DebugProcess) : MultiReq
490490

491491
private fun findCrossInlineArguments(argument: KtFunction, parameterDescriptor: ValueParameterDescriptor, context: BindingContext): Set<String> {
492492
return runReadAction {
493-
val source = parameterDescriptor.source.getPsi() as? KtParameter
493+
val source = parameterDescriptor.original.source.getPsi() as? KtParameter
494494
val functionName = source?.ownerFunction?.name
495495
if (functionName != null) {
496496
return@runReadAction setOf(getCrossInlineArgumentClassName(argument, functionName, context))
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
LineBreakpoint created at genericCrossinlineArgument.kt:14
2+
!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
3+
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
4+
genericCrossinlineArgument.kt:14
5+
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
6+
7+
Process finished with exit code 0
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package genericCrossinlineArgument
2+
3+
interface A {
4+
fun expr(): Boolean
5+
}
6+
7+
inline fun <T> test1(t: T, crossinline formula: T.() -> Boolean) = object : A {
8+
override fun expr() = formula(t)
9+
}
10+
11+
fun main(args: Array<String>) {
12+
test1("aaa") {
13+
//Breakpoint!
14+
1 + 1 > 0
15+
}.expr()
16+
}

idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,12 @@ public void testFunFromSuperClass() throws Exception {
157157
doSingleBreakpointTest(fileName);
158158
}
159159

160+
@TestMetadata("genericCrossinlineArgument.kt")
161+
public void testGenericCrossinlineArgument() throws Exception {
162+
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/genericCrossinlineArgument.kt");
163+
doSingleBreakpointTest(fileName);
164+
}
165+
160166
@TestMetadata("imports.kt")
161167
public void testImports() throws Exception {
162168
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/imports.kt");

0 commit comments

Comments
 (0)