Debugger: Support parameters of inlined lambda in evaluate expression

This commit is contained in:
Natalia Ukhorskaya
2015-08-25 13:52:15 +03:00
parent 32bf7d9520
commit 19e8c9edb0
12 changed files with 224 additions and 28 deletions
@@ -3,8 +3,8 @@ package inlineFunctionalExpression
fun main(args: Array<String>) {
val a = array(1)
// EXPRESSION: it
// RESULT: Unresolved reference: it
// STEP_INTO: 1
// RESULT: 1: I
// RESUME: 1
//Breakpoint!
a.map(fun (it): Int { return it * 1 })
}
@@ -3,8 +3,8 @@ package inlineLambda
fun main(args: Array<String>) {
val a = array(1)
// EXPRESSION: it
// RESULT: Unresolved reference: it
// STEP_INTO: 1
// RESULT: 1: I
// RESUME: 1
//Breakpoint!
a.map { it * 1 }
}
@@ -0,0 +1,37 @@
// Check that evaluate expression works inside inline function
package parametersOfInlineFun
fun main(args: Array<String>) {
val a = A(1)
// RESUME: 1
//Breakpoint!
a.foo { 1 + 1 }
}
inline fun A.foo(f: (i: Int) -> Unit) {
val primitive = 1
val array = arrayOf(1)
val str = "str"
val list = listOf("str")
f(1)
}
class A(val prop: Int)
// EXPRESSION: primitive
// RESULT: 1: I
// EXPRESSION: it
// RESULT: 1: I
// EXPRESSION: array
// RESULT: instance of java.lang.Integer[1] (id=ID): [Ljava/lang/Integer;
// EXPRESSION: str
// RESULT: "str": Ljava/lang/String;
// EXPRESSION: list
// RESULT: instance of java.util.Collections$SingletonList(id=ID): Ljava/util/Collections$SingletonList;
// EXPRESSION: `$receiver`.prop
// RESULT: 1: I
@@ -0,0 +1,24 @@
// Check that evaluate expression works inside inline function
package parametersOfInlineFunSeveralOnLine
fun main(args: Array<String>) {
val a = A()
// RESUME: 3
//Breakpoint!
a.foo { 1 + 1 }.bar { 1 + 1 }
}
inline fun A.foo(f: (i: Int) -> Unit): A {
f(1)
return this
}
inline fun A.bar(f: (s: String) -> Unit): A {
f("str")
return this
}
class A()
// EXPRESSION: it
// RESULT: "str": Ljava/lang/String;