Debugger: Fix breakpoints and stepping for inline-only function lambda arguments (#KT-23064)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package inlineOnlyLambdas
|
||||
|
||||
class Test
|
||||
fun test() {}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val data = Test()
|
||||
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
data.onelinerApply { test() }
|
||||
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
data.multiLineApply { test() }
|
||||
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
data.onelinerApply2 { test() }
|
||||
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
data.multiLineApply2 { test() }
|
||||
|
||||
//Breakpoint!
|
||||
data.withoutLambdaParams()
|
||||
}
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun <T> T.withoutLambdaParams(): T {
|
||||
return this
|
||||
}
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun <T> T.onelinerApply(block: T.() -> Unit): T { block(); return this }
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun <T> T.multiLineApply(block: T.() -> Unit): T {
|
||||
block();
|
||||
return this
|
||||
}
|
||||
|
||||
inline fun <T> T.onelinerApply2(block: T.() -> Unit): T { block(); return this }
|
||||
|
||||
inline fun <T> T.multiLineApply2(block: T.() -> Unit): T {
|
||||
block();
|
||||
return this
|
||||
}
|
||||
|
||||
// RESUME: 5
|
||||
@@ -0,0 +1,15 @@
|
||||
LineBreakpoint created at inlineOnlyLambdas.kt:10 lambdaOrdinal = 1
|
||||
LineBreakpoint created at inlineOnlyLambdas.kt:13 lambdaOrdinal = 1
|
||||
LineBreakpoint created at inlineOnlyLambdas.kt:16 lambdaOrdinal = 1
|
||||
LineBreakpoint created at inlineOnlyLambdas.kt:19 lambdaOrdinal = 1
|
||||
LineBreakpoint created at inlineOnlyLambdas.kt:22
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
inlineOnlyLambdas.kt:10
|
||||
inlineOnlyLambdas.kt:13
|
||||
inlineOnlyLambdas.kt:16
|
||||
inlineOnlyLambdas.kt:19
|
||||
inlineOnlyLambdas.kt:22
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package inlineOnlyLambdasStepping
|
||||
|
||||
class Test
|
||||
fun test() {}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val data = Test()
|
||||
|
||||
// STEP_OVER: 2
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
data.onelinerApply { test() }
|
||||
|
||||
data.multiLineApply { test() }
|
||||
|
||||
// STEP_OVER: 3
|
||||
//Breakpoint! (lambdaOrdinal = 1)
|
||||
data.onelinerApply2 { test() }
|
||||
|
||||
data.multiLineApply2 { test() }
|
||||
}
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun <T> T.onelinerApply(block: T.() -> Unit): T { block(); return this }
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun <T> T.multiLineApply(block: T.() -> Unit): T {
|
||||
block();
|
||||
return this
|
||||
}
|
||||
|
||||
inline fun <T> T.onelinerApply2(block: T.() -> Unit): T { block(); return this }
|
||||
|
||||
inline fun <T> T.multiLineApply2(block: T.() -> Unit): T {
|
||||
block();
|
||||
return this
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
LineBreakpoint created at inlineOnlyLambdasStepping.kt:11 lambdaOrdinal = 1
|
||||
LineBreakpoint created at inlineOnlyLambdasStepping.kt:17 lambdaOrdinal = 1
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
inlineOnlyLambdasStepping.kt:11
|
||||
inlineOnlyLambdasStepping.kt:13
|
||||
inlineOnlyLambdasStepping.kt:17
|
||||
inlineOnlyLambdasStepping.kt:17
|
||||
inlineOnlyLambdasStepping.kt:19
|
||||
inlineOnlyLambdasStepping.kt:20
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
@@ -27,5 +27,5 @@ inline fun forEach(s: () -> Unit) {
|
||||
}
|
||||
}
|
||||
|
||||
// STEP_INTO: 9
|
||||
// STEP_INTO: 15
|
||||
// TRACING_FILTERS_ENABLED: false
|
||||
@@ -3,14 +3,20 @@ Run Java
|
||||
Connected to the target VM
|
||||
inlineOnly.kt:5
|
||||
inlineOnly.kt:7
|
||||
inlineOnly.kt:13
|
||||
inlineOnly.kt:14
|
||||
inlineOnly.kt:25
|
||||
inlineOnly.kt:26
|
||||
inlineOnly.kt:7
|
||||
inlineOnly.kt:13
|
||||
inlineOnly.kt:14
|
||||
inlineOnly.kt:7
|
||||
inlineOnly.kt:9
|
||||
PrintStream.!EXT!
|
||||
inlineOnly.kt:25
|
||||
inlineOnly.kt:26
|
||||
inlineOnly.kt:7
|
||||
inlineOnly.kt:13
|
||||
inlineOnly.kt:14
|
||||
inlineOnly.kt:7
|
||||
inlineOnly.kt:25
|
||||
inlineOnly.kt:28
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
|
||||
Reference in New Issue
Block a user