Fix breakpoints in inline function with generic crossinline argument
#KT-10673 Fixed
This commit is contained in:
@@ -559,7 +559,7 @@ class KotlinPositionManager(private val myDebugProcess: DebugProcess) : MultiReq
|
|||||||
val call = (it.element as? KtExpression)?.let { KtPsiUtil.getParentCallIfPresent(it) }
|
val call = (it.element as? KtExpression)?.let { KtPsiUtil.getParentCallIfPresent(it) }
|
||||||
if (call != null) {
|
if (call != null) {
|
||||||
val resolvedCall = call.getResolvedCall(context)
|
val resolvedCall = call.getResolvedCall(context)
|
||||||
val argument = resolvedCall?.valueArguments?.get(parameter)
|
val argument = resolvedCall?.valueArguments?.entries?.firstOrNull { it.key.original == parameter }?.value
|
||||||
if (argument != null) {
|
if (argument != null) {
|
||||||
val argumentExpression = getArgumentExpression(argument.arguments.first())
|
val argumentExpression = getArgumentExpression(argument.arguments.first())
|
||||||
if (argumentExpression is KtFunction) {
|
if (argumentExpression is KtFunction) {
|
||||||
|
|||||||
+58
-54
@@ -1,59 +1,63 @@
|
|||||||
LineBreakpoint created at crossinlineLiteral.kt:12
|
LineBreakpoint created at crossinlineLiteral.kt:13
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:17
|
LineBreakpoint created at crossinlineLiteral.kt:18
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:22
|
LineBreakpoint created at crossinlineLiteral.kt:23
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:27
|
LineBreakpoint created at crossinlineLiteral.kt:28
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:32
|
LineBreakpoint created at crossinlineLiteral.kt:33
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:37
|
LineBreakpoint created at crossinlineLiteral.kt:38
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:42
|
LineBreakpoint created at crossinlineLiteral.kt:43
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:45
|
LineBreakpoint created at crossinlineLiteral.kt:46
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:50
|
LineBreakpoint created at crossinlineLiteral.kt:51
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:58
|
LineBreakpoint created at crossinlineLiteral.kt:59
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:66
|
LineBreakpoint created at crossinlineLiteral.kt:67
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:74
|
LineBreakpoint created at crossinlineLiteral.kt:75
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:80
|
LineBreakpoint created at crossinlineLiteral.kt:81
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:89
|
LineBreakpoint created at crossinlineLiteral.kt:90
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:97
|
LineBreakpoint created at crossinlineLiteral.kt:98
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:102
|
LineBreakpoint created at crossinlineLiteral.kt:103
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:108
|
LineBreakpoint created at crossinlineLiteral.kt:109
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:120
|
LineBreakpoint created at crossinlineLiteral.kt:121
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:127
|
LineBreakpoint created at crossinlineLiteral.kt:128
|
||||||
LineBreakpoint created at crossinlineLiteral.kt:137
|
LineBreakpoint created at crossinlineLiteral.kt:138
|
||||||
|
LineBreakpoint created at crossinlineLiteral.kt:154
|
||||||
|
LineBreakpoint created at crossinlineLiteral.kt:157
|
||||||
!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! crossinlineLiteral.CrossinlineLiteralKt
|
!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! crossinlineLiteral.CrossinlineLiteralKt
|
||||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
crossinlineLiteral.kt:74
|
crossinlineLiteral.kt:75
|
||||||
crossinlineLiteral.kt:12
|
crossinlineLiteral.kt:13
|
||||||
crossinlineLiteral.kt:74
|
crossinlineLiteral.kt:75
|
||||||
crossinlineLiteral.kt:17
|
crossinlineLiteral.kt:18
|
||||||
crossinlineLiteral.kt:80
|
crossinlineLiteral.kt:81
|
||||||
crossinlineLiteral.kt:22
|
crossinlineLiteral.kt:23
|
||||||
crossinlineLiteral.kt:80
|
crossinlineLiteral.kt:81
|
||||||
crossinlineLiteral.kt:27
|
crossinlineLiteral.kt:28
|
||||||
crossinlineLiteral.kt:89
|
crossinlineLiteral.kt:90
|
||||||
crossinlineLiteral.kt:32
|
crossinlineLiteral.kt:33
|
||||||
crossinlineLiteral.kt:97
|
crossinlineLiteral.kt:98
|
||||||
crossinlineLiteral.kt:37
|
crossinlineLiteral.kt:38
|
||||||
crossinlineLiteral.kt:102
|
crossinlineLiteral.kt:103
|
||||||
crossinlineLiteral.kt:37
|
crossinlineLiteral.kt:38
|
||||||
crossinlineLiteral.kt:108
|
crossinlineLiteral.kt:109
|
||||||
crossinlineLiteral.kt:37
|
crossinlineLiteral.kt:38
|
||||||
crossinlineLiteral.kt:120
|
crossinlineLiteral.kt:121
|
||||||
crossinlineLiteral.kt:42
|
crossinlineLiteral.kt:43
|
||||||
crossinlineLiteral.kt:127
|
crossinlineLiteral.kt:128
|
||||||
crossinlineLiteral.kt:45
|
crossinlineLiteral.kt:46
|
||||||
crossinlineLiteral.kt:137
|
crossinlineLiteral.kt:138
|
||||||
crossinlineLiteral.kt:50
|
crossinlineLiteral.kt:51
|
||||||
crossinlineLiteral.kt:97
|
crossinlineLiteral.kt:98
|
||||||
crossinlineLiteral.kt:58
|
crossinlineLiteral.kt:59
|
||||||
crossinlineLiteral.kt:102
|
crossinlineLiteral.kt:103
|
||||||
crossinlineLiteral.kt:58
|
crossinlineLiteral.kt:59
|
||||||
crossinlineLiteral.kt:108
|
crossinlineLiteral.kt:109
|
||||||
crossinlineLiteral.kt:58
|
crossinlineLiteral.kt:59
|
||||||
crossinlineLiteral.kt:97
|
crossinlineLiteral.kt:98
|
||||||
crossinlineLiteral.kt:66
|
crossinlineLiteral.kt:67
|
||||||
crossinlineLiteral.kt:102
|
crossinlineLiteral.kt:103
|
||||||
crossinlineLiteral.kt:66
|
crossinlineLiteral.kt:67
|
||||||
crossinlineLiteral.kt:108
|
crossinlineLiteral.kt:109
|
||||||
crossinlineLiteral.kt:66
|
crossinlineLiteral.kt:67
|
||||||
|
crossinlineLiteral.kt:154
|
||||||
|
crossinlineLiteral.kt:157
|
||||||
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
|
|
||||||
Process finished with exit code 0
|
Process finished with exit code 0
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ fun main(args: Array<String>) {
|
|||||||
callFromTopLevel()
|
callFromTopLevel()
|
||||||
A().callFromClass()
|
A().callFromClass()
|
||||||
A.callFromCompanion()
|
A.callFromCompanion()
|
||||||
|
genericCall()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun callFromTopLevel() {
|
fun callFromTopLevel() {
|
||||||
@@ -140,4 +141,21 @@ inline fun lambdaInInlinedLambdaCall(crossinline f: (Int) -> Unit) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RESUME: 35
|
fun genericCall() {
|
||||||
|
tick(0) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> back(f: () -> T) {
|
||||||
|
f()
|
||||||
|
}
|
||||||
|
|
||||||
|
inline fun <V> tick(p: Int, crossinline f: (Int) -> V) {
|
||||||
|
//Breakpoint!
|
||||||
|
f(p)
|
||||||
|
back {
|
||||||
|
//Breakpoint!
|
||||||
|
f(p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RESUME: 37
|
||||||
Reference in New Issue
Block a user