Debugger: implement Smart Step Into

#KT-4639 Fixed
This commit is contained in:
Natalia Ukhorskaya
2014-03-21 11:13:19 +04:00
parent 3bc35adf09
commit e8d2ba197e
32 changed files with 747 additions and 0 deletions
@@ -0,0 +1,9 @@
fun foo() {
[Ann() Ann] val a = bar()<caret>
}
annotation class Ann
fun bar() = 1
// EXISTS: bar()
@@ -0,0 +1,10 @@
fun foo() {
val a = A()
<caret>a[1]
}
class A {
fun get(i: Int) = 1
}
// EXISTS: get(int)
@@ -0,0 +1,13 @@
fun foo() {
A().getB().f1()<caret>
}
class A {
fun getB() = B()
}
class B {
fun f1() {}
}
// EXISTS: getB(), f1()
@@ -0,0 +1,11 @@
class A {
fun plus(a: A) {}
}
fun foo() {
f1() + A() + A()<caret>
}
fun f1() = A()
// EXISTS: plus(A), f1()
@@ -0,0 +1,11 @@
fun foo() {
a<caret>
}
val a by Delegate()
class Delegate {
fun get(t: Any?, p: PropertyMetadata) = 1
}
// EXISTS: a.get(Object\, PropertyMetadata)
@@ -0,0 +1,10 @@
fun foo() {
<caret>do {
f2()
} while (f1())
}
fun f1() = true
fun f2() {}
// EXISTS: f1()
@@ -0,0 +1,12 @@
fun foo() {
val a = A()
a.f1(f2())<caret>
}
class A {
fun f1(): Int = 1
}
fun f2() {}
// EXISTS: f1(), f2()
@@ -0,0 +1,12 @@
fun foo() {
val a = A()
f2(a.f1())<caret>
}
class A {
fun f1() = 1
}
fun f2(i: Int) {}
// EXISTS: f1(), f2(int)
@@ -0,0 +1,3 @@
fun foo() {
val a = 1<caret>
}
@@ -0,0 +1,11 @@
fun foo() {
val a = 1
<caret>for (a in f1()) {
f2()
}
}
fun f1() = 1..2
fun f2() {}
// EXISTS: f1()
@@ -0,0 +1,10 @@
fun foo() {
<caret>f1() {
f2()
}
}
fun f1(f: () -> Unit) {}
fun f2() {}
// EXISTS: f1(Function0<? extends Unit>)
@@ -0,0 +1,10 @@
fun foo() {
<caret>if (f1()) {
f2()
}
}
fun f1() = true
fun f2() {}
// EXISTS: f1()
@@ -0,0 +1,12 @@
fun foo() {
val a = A()
f2(a f1 1)<caret>
}
class A {
fun f1(i: Int) = 1
}
fun f2(i: Int) {}
// EXISTS: f1(int), f2(int)
@@ -0,0 +1,10 @@
fun foo() {
val a = A()
a()<caret>
}
class A {
fun invoke() {}
}
// EXISTS: invoke()
@@ -0,0 +1,12 @@
fun foo() {
<caret>f1(
f2(),
f3()
)
}
fun f1(vararg i: Int) {}
fun f2() = 1
fun f3() = 1
// EXISTS: f1(int...), f2(), f3()
@@ -0,0 +1,15 @@
fun foo() {
<caret>A()
.getB()
.f1()
}
class A {
fun getB() = B()
}
class B {
fun f1() {}
}
// EXISTS: getB(), f1()
@@ -0,0 +1,9 @@
fun foo() {
<caret>val a = object {
fun f() {
f2()
}
}
}
fun f2() {}
@@ -0,0 +1,8 @@
fun foo() {
f1(f2())<caret>
}
fun f1(i: Int) = 1
fun f2() {}
// EXISTS: f1(int), f2()
@@ -0,0 +1,7 @@
fun foo() {
(bar())<caret>
}
fun bar() {}
// EXISTS: bar()
@@ -0,0 +1,18 @@
fun foo() {
a + b + c + d<caret>
}
val a = 1
val b = 1
get
val c: Int
get() = 1
val d: Int
get() {
return 1
}
// EXISTS: getC(), getD()
@@ -0,0 +1,7 @@
fun foo() {
bar()<caret>
}
fun bar() {}
// EXISTS: bar()
@@ -0,0 +1,8 @@
fun foo() {
<caret>f2("aaa${f1()}")
}
fun f1() = "1"
fun f2(s: String) {}
// EXISTS: f1(), f2(String)
@@ -0,0 +1,9 @@
class A {
fun plus() {}
fun minus() {}
}
fun foo() {
+A() || A()-<caret>
}
// EXISTS: plus(), minus()
@@ -0,0 +1,13 @@
fun foo() {
<caret>when (f1()) {
true -> f2()
else -> {
f2()
}
}
}
fun f1() = true
fun f2() {}
// EXISTS: f1()
@@ -0,0 +1,10 @@
fun foo() {
<caret>while (f1()) {
f2()
}
}
fun f1() = true
fun f2() {}
// EXISTS: f1()