Debugger: support stepping out inline function

This commit is contained in:
Natalia Ukhorskaya
2015-09-02 12:22:06 +03:00
parent ba686c701e
commit 060b6e6b15
16 changed files with 348 additions and 9 deletions
@@ -0,0 +1,15 @@
package stepOutInlineFunctionStdlib
fun main(args: Array<String>) {
val a = listOf(1, 2, 3)
//Breakpoint!
a.firstOrNull {
it > 1
}
}
fun test(i: Int) = 1
// TRACING_FILTERS_ENABLED: false
// STEP_INTO: 1
// STEP_OUT: 1
@@ -0,0 +1,19 @@
package stepOutInlineFunction
fun main(args: Array<String>) {
foo {
test(2)
}
test(3)
}
inline fun foo(f: () -> Unit) {
//Breakpoint!
val a = 1
f()
val b = 2
}
fun test(i: Int) = 1
// STEP_OUT: 2
@@ -0,0 +1,20 @@
package stepOutInlinedLambdaArgument
fun main(args: Array<String>) {
foo {
//Breakpoint!
test(1)
test(2)
}
test(3)
}
inline fun foo(f: () -> Unit) {
val a = 1
f()
val b = 2
}
fun test(i: Int) = 1
// STEP_OUT: 2
@@ -0,0 +1,27 @@
package stepOutSeveralInlineArgumentDeepest
fun main(args: Array<String>) {
f1 {
//Breakpoint!
test(2)
}
test(3)
}
inline fun f1(f: () -> Unit) {
val a = 1
f2 {
f()
}
val b = 2
}
inline fun f2(f: () -> Unit) {
val a = 1
f()
val b = 2
}
fun test(i: Int) = 1
// STEP_OUT: 4
@@ -0,0 +1,25 @@
package stepOutSeveralInlineFunctions
fun main(args: Array<String>) {
f1 {
test(2)
}
test(3)
}
inline fun f1(f: () -> Unit) {
//Breakpoint!
val a = 1
f2 {
f()
}
val b = 2
}
inline fun f2(f: () -> Unit) {
val a = 1
f()
val b = 2
}
fun test(i: Int) = 1
@@ -0,0 +1,25 @@
package stepOutSeveralInlineFunctionsDeepest
fun main(args: Array<String>) {
f1 {
test(2)
}
test(3)
}
inline fun f1(f: () -> Unit) {
val a = 1
f2 {
f()
}
val b = 2
}
inline fun f2(f: () -> Unit) {
//Breakpoint!
val a = 1
f()
val b = 2
}
fun test(i: Int) = 1