[JVM] Port line number tests to stepping framework.
Allow specifying JVM and JVM_IR as well as shared expectations. Add the method name to the step. Discard steps in synthetic methods.
This commit is contained in:
+6
-6
@@ -1,4 +1,4 @@
|
||||
//FILE: test.kt
|
||||
// FILE: test.kt
|
||||
fun cond() = false
|
||||
|
||||
fun box() {
|
||||
@@ -9,8 +9,8 @@ fun box() {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:5
|
||||
// test.kt:2
|
||||
// test.kt:5
|
||||
// test.kt:8
|
||||
// test.kt:9
|
||||
// test.kt:5 box
|
||||
// test.kt:2 cond
|
||||
// test.kt:5 box
|
||||
// test.kt:8 box
|
||||
// test.kt:9 box
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun box() {
|
||||
{
|
||||
"OK"
|
||||
}()
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:4 box
|
||||
// test.kt:5 invoke
|
||||
// test.kt:4 box
|
||||
// test.kt:7 box
|
||||
+14
-14
@@ -30,17 +30,17 @@ fun box(): String {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:24
|
||||
// test.kt:15
|
||||
// test.kt:16
|
||||
// test.kt:3
|
||||
// test.kt:16
|
||||
// test.kt:17
|
||||
// test.kt:21
|
||||
// test.kt:25
|
||||
// test.kt:6
|
||||
// test.kt:3
|
||||
// test.kt:6
|
||||
// test.kt:7
|
||||
// test.kt:12
|
||||
// test.kt:29
|
||||
// test.kt:24 box
|
||||
// test.kt:15 box
|
||||
// test.kt:16 box
|
||||
// test.kt:3 getMASSERTIONS_ENABLED
|
||||
// test.kt:16 box
|
||||
// test.kt:17 box
|
||||
// test.kt:21 box
|
||||
// test.kt:25 box
|
||||
// test.kt:6 box
|
||||
// test.kt:3 getMASSERTIONS_ENABLED
|
||||
// test.kt:6 box
|
||||
// test.kt:7 box
|
||||
// test.kt:12 box
|
||||
// test.kt:29 box
|
||||
|
||||
+8
-10
@@ -11,13 +11,11 @@ fun f(block: () -> Unit) {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:10
|
||||
// test.kt:5
|
||||
// test.kt:6
|
||||
// test.kt:-1
|
||||
// test.kt:-1
|
||||
// test.kt:10
|
||||
// test.kt:11
|
||||
// test.kt:7
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:10 f
|
||||
// test.kt:5 invoke
|
||||
// test.kt:6 invoke
|
||||
// test.kt:10 f
|
||||
// test.kt:11 f
|
||||
// test.kt:7 box
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// FILE: test.kt
|
||||
|
||||
class A {
|
||||
val prop = 1
|
||||
|
||||
fun foo() {
|
||||
prop
|
||||
}
|
||||
}
|
||||
|
||||
fun box() {
|
||||
val a = A()
|
||||
a.prop
|
||||
a.foo()
|
||||
}
|
||||
|
||||
// TODO: The JVM_IR backend has an extra line number on the return. This causes line
|
||||
// three to be hit both on entry to the constructor and on exit after storing the
|
||||
// value of prop.
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:12 box
|
||||
// test.kt:3 <init>
|
||||
// test.kt:4 <init>
|
||||
// LINENUMBERS JVM_IR
|
||||
// test.kt:3 <init>
|
||||
// LINENUMBERS
|
||||
// test.kt:12 box
|
||||
// test.kt:13 box
|
||||
// test.kt:4 getProp
|
||||
// test.kt:13 box
|
||||
// test.kt:14 box
|
||||
// test.kt:7 foo
|
||||
// test.kt:8 foo
|
||||
// test.kt:15 box
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
// FILE: test.kt
|
||||
|
||||
class A {
|
||||
companion object {
|
||||
val prop0 = 1
|
||||
val prop1 = 2
|
||||
fun foo(): Int {
|
||||
return prop0 + prop1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun box() {
|
||||
A.prop0
|
||||
A.prop1
|
||||
A.foo()
|
||||
}
|
||||
|
||||
// The JVM version hits get getProp line numbers twice. That appears
|
||||
// to be because the synthetic accessibility bridges (access$getProp0$cp)
|
||||
// have line numbers (of the start of the surrounding class) in the JVM
|
||||
// version and they do not have line numbers in the JVM_IR version.
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:14 box
|
||||
// test.kt:5 getProp0
|
||||
// LINENUMBERS JVM
|
||||
// test.kt:5 getProp0
|
||||
// LINENUMBERS
|
||||
// test.kt:14 box
|
||||
// test.kt:15 box
|
||||
// test.kt:6 getProp1
|
||||
// LINENUMBERS JVM
|
||||
// test.kt:6 getProp1
|
||||
// LINENUMBERS
|
||||
// test.kt:15 box
|
||||
// test.kt:16 box
|
||||
// test.kt:8 foo
|
||||
// test.kt:5 getProp0
|
||||
// LINENUMBERS JVM
|
||||
// test.kt:5 getProp0
|
||||
// LINENUMBERS
|
||||
// test.kt:8 foo
|
||||
// test.kt:6 getProp1
|
||||
// LINENUMBERS JVM
|
||||
// test.kt:6 getProp1
|
||||
// LINENUMBERS
|
||||
// test.kt:8 foo
|
||||
// test.kt:16 box
|
||||
// test.kt:17 box
|
||||
+13
-13
@@ -1,4 +1,4 @@
|
||||
//FILE: test.kt
|
||||
// FILE: test.kt
|
||||
fun box() {
|
||||
val k = if (getA()
|
||||
&& getB()
|
||||
@@ -19,15 +19,15 @@ fun getC() = false
|
||||
fun getD() = true
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:13
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:15
|
||||
// test.kt:4
|
||||
// test.kt:5
|
||||
// test.kt:17
|
||||
// test.kt:5
|
||||
// test.kt:9
|
||||
// test.kt:3
|
||||
// test.kt:11
|
||||
// test.kt:3 box
|
||||
// test.kt:13 getA
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:15 getB
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
// test.kt:17 getC
|
||||
// test.kt:5 box
|
||||
// test.kt:9 box
|
||||
// test.kt:3 box
|
||||
// test.kt:11 box
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// FILE: test.kt
|
||||
|
||||
class A {
|
||||
fun computeParam() = 32
|
||||
|
||||
fun foo(param: Int = computeParam()) {
|
||||
}
|
||||
}
|
||||
|
||||
fun box() {
|
||||
A().foo()
|
||||
}
|
||||
|
||||
// FORCE_STEP_INTO
|
||||
// LINENUMBERS
|
||||
// test.kt:11 box
|
||||
// test.kt:3 <init>
|
||||
// test.kt:11 box
|
||||
// test.kt:6 foo$default (synthetic)
|
||||
// test.kt:4 computeParam
|
||||
// test.kt:6 foo$default (synthetic)
|
||||
// test.kt:7 foo
|
||||
// test.kt:6 foo$default (synthetic)
|
||||
// test.kt:12 box
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// FILE: test.kt
|
||||
|
||||
enum class E {
|
||||
E1;
|
||||
|
||||
fun foo() = {
|
||||
prop
|
||||
}
|
||||
|
||||
val prop = 22
|
||||
}
|
||||
|
||||
fun box() {
|
||||
E.E1.foo()
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:14 box
|
||||
// test.kt:6 foo
|
||||
// test.kt:8 foo
|
||||
// test.kt:14 box
|
||||
// test.kt:15 box
|
||||
+12
-12
@@ -1,4 +1,4 @@
|
||||
//FILE: test.kt
|
||||
// FILE: test.kt
|
||||
fun box() {
|
||||
for (i in 1..3) {
|
||||
foo(i)
|
||||
@@ -8,14 +8,14 @@ fun box() {
|
||||
inline fun foo(n: Int) {}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:3
|
||||
// test.kt:6
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 box
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 box
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 box
|
||||
// test.kt:3 box
|
||||
// test.kt:6 box
|
||||
|
||||
+13
-13
@@ -1,4 +1,4 @@
|
||||
//FILE: foo.kt
|
||||
// FILE: foo.kt
|
||||
import bar
|
||||
fun foo(x: Int): Int {
|
||||
if (x >= 0) { // 4
|
||||
@@ -21,15 +21,15 @@ fun bar(x: Int) =
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:4
|
||||
// foo.kt:4
|
||||
// foo.kt:7
|
||||
// test.kt:8
|
||||
// test.kt:9
|
||||
// foo.kt:4
|
||||
// foo.kt:5
|
||||
// test.kt:9
|
||||
// test.kt:12
|
||||
// foo.kt:7
|
||||
// test.kt:4
|
||||
// test.kt:5
|
||||
// test.kt:4 box
|
||||
// foo.kt:4 foo
|
||||
// foo.kt:7 foo
|
||||
// test.kt:8 bar
|
||||
// test.kt:9 bar
|
||||
// foo.kt:4 foo
|
||||
// foo.kt:5 foo
|
||||
// test.kt:9 bar
|
||||
// test.kt:12 bar
|
||||
// foo.kt:7 foo
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
|
||||
+9
-9
@@ -1,4 +1,4 @@
|
||||
//FILE: test.kt
|
||||
// FILE: test.kt
|
||||
fun box(): Int {
|
||||
if (
|
||||
getB() ==
|
||||
@@ -14,11 +14,11 @@ inline fun getB(): Int {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:4
|
||||
// test.kt:13
|
||||
// test.kt:5
|
||||
// test.kt:10
|
||||
// test.kt:5
|
||||
// test.kt:7
|
||||
// test.kt:13
|
||||
// test.kt:7
|
||||
// test.kt:4 box
|
||||
// test.kt:13 box
|
||||
// test.kt:5 box
|
||||
// test.kt:10 getA
|
||||
// test.kt:5 box
|
||||
// test.kt:7 box
|
||||
// test.kt:13 box
|
||||
// test.kt:7 box
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun foo(x: Int) {
|
||||
if (x > 0) {
|
||||
"OK"
|
||||
}
|
||||
|
||||
if (x > 0) else {
|
||||
"OK"
|
||||
}
|
||||
|
||||
if (x > 0) {
|
||||
"OK"
|
||||
} else {
|
||||
"ALSO OK"
|
||||
}
|
||||
}
|
||||
|
||||
fun box() {
|
||||
foo(1)
|
||||
foo(0)
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:20 box
|
||||
// test.kt:4 foo
|
||||
// test.kt:5 foo
|
||||
// test.kt:8 foo
|
||||
// test.kt:12 foo
|
||||
// test.kt:13 foo
|
||||
// test.kt:17 foo
|
||||
// test.kt:21 box
|
||||
// test.kt:4 foo
|
||||
// test.kt:8 foo
|
||||
// test.kt:9 foo
|
||||
// test.kt:12 foo
|
||||
// test.kt:15 foo
|
||||
// test.kt:17 foo
|
||||
// test.kt:22 box
|
||||
+18
-18
@@ -27,21 +27,21 @@ fun box() {
|
||||
// that is the actual evaluation order.
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:5
|
||||
// test.kt:6
|
||||
// test.kt:7
|
||||
// test.kt:6
|
||||
// test.kt:8
|
||||
// test.kt:9
|
||||
// test.kt:10
|
||||
// test.kt:9
|
||||
// test.kt:11
|
||||
// test.kt:13
|
||||
// test.kt:12
|
||||
// test.kt:15
|
||||
// test.kt:16
|
||||
// test.kt:15
|
||||
// test.kt:14
|
||||
// test.kt:17
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
// test.kt:6 box
|
||||
// test.kt:7 box
|
||||
// test.kt:6 box
|
||||
// test.kt:8 box
|
||||
// test.kt:9 box
|
||||
// test.kt:10 box
|
||||
// test.kt:9 box
|
||||
// test.kt:11 box
|
||||
// test.kt:13 box
|
||||
// test.kt:12 box
|
||||
// test.kt:15 box
|
||||
// test.kt:16 box
|
||||
// test.kt:15 box
|
||||
// test.kt:14 box
|
||||
// test.kt:17 box
|
||||
|
||||
@@ -11,10 +11,10 @@ inline fun f(block: () -> Unit) {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:10
|
||||
// test.kt:5
|
||||
// test.kt:6
|
||||
// test.kt:11
|
||||
// test.kt:7
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:10 box
|
||||
// test.kt:5 box
|
||||
// test.kt:6 box
|
||||
// test.kt:11 box
|
||||
// test.kt:7 box
|
||||
|
||||
@@ -11,10 +11,10 @@ inline fun f(block: () -> Unit) {
|
||||
fun g() {}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:4
|
||||
// test.kt:11
|
||||
// test.kt:9
|
||||
// test.kt:5
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 box
|
||||
// test.kt:4 box
|
||||
// test.kt:11 g
|
||||
// test.kt:9 box
|
||||
// test.kt:5 box
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
// FILE: test.kt
|
||||
|
||||
inline fun inlineFun(s: () -> Unit) {
|
||||
s()
|
||||
}
|
||||
|
||||
fun box() {
|
||||
inlineFun ({
|
||||
1
|
||||
})
|
||||
|
||||
inlineFun {
|
||||
2
|
||||
}
|
||||
|
||||
inlineFun {
|
||||
3
|
||||
|
||||
inlineFun {
|
||||
4
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:8 box
|
||||
// test.kt:4 box
|
||||
// test.kt:9 box
|
||||
// test.kt:10 box
|
||||
// test.kt:5 box
|
||||
// test.kt:12 box
|
||||
// test.kt:4 box
|
||||
// test.kt:13 box
|
||||
// test.kt:14 box
|
||||
// test.kt:5 box
|
||||
// test.kt:16 box
|
||||
// test.kt:4 box
|
||||
// test.kt:17 box
|
||||
// test.kt:19 box
|
||||
// test.kt:4 box
|
||||
// test.kt:20 box
|
||||
// test.kt:21 box
|
||||
// test.kt:5 box
|
||||
// test.kt:22 box
|
||||
// test.kt:5 box
|
||||
// test.kt:23 box
|
||||
+8
-8
@@ -1,5 +1,5 @@
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
inline fun foo(stringMaker: () -> String): String {
|
||||
return stringMaker()
|
||||
}
|
||||
@@ -14,10 +14,10 @@ fun box(): String {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:8
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:9
|
||||
// test.kt:4
|
||||
// test.kt:10
|
||||
// test.kt:13
|
||||
// test.kt:8 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 box
|
||||
// test.kt:9 box
|
||||
// test.kt:4 box
|
||||
// test.kt:10 box
|
||||
// test.kt:13 box
|
||||
|
||||
@@ -31,12 +31,12 @@ fun box(): String {
|
||||
// test.kt:17
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:15
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:3
|
||||
// test.kt:16
|
||||
// test.kt:7
|
||||
// test.kt:11
|
||||
// test.kt:8
|
||||
// test.kt:17
|
||||
// test.kt:15 box
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:3 box
|
||||
// test.kt:16 box
|
||||
// test.kt:7 box
|
||||
// test.kt:11 box
|
||||
// test.kt:8 box
|
||||
// test.kt:17 box
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun normalFunction() {
|
||||
"OK"
|
||||
}
|
||||
|
||||
inline fun inlineFunction() {
|
||||
"OK"
|
||||
}
|
||||
|
||||
fun test1() {
|
||||
inlineFunction()
|
||||
"OK"
|
||||
}
|
||||
|
||||
fun test2() {
|
||||
normalFunction()
|
||||
"OK"
|
||||
}
|
||||
|
||||
fun box() {
|
||||
test1()
|
||||
test2()
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:22 box
|
||||
// test.kt:12 test1
|
||||
// test.kt:8 test1
|
||||
// test.kt:9 test1
|
||||
// test.kt:13 test1
|
||||
// test.kt:14 test1
|
||||
// test.kt:23 box
|
||||
// test.kt:17 test2
|
||||
// test.kt:4 normalFunction
|
||||
// test.kt:5 normalFunction
|
||||
// test.kt:18 test2
|
||||
// test.kt:19 test2
|
||||
// test.kt:24 box
|
||||
@@ -0,0 +1,28 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun box() {
|
||||
"OK"
|
||||
fun bar() {
|
||||
"OK"
|
||||
}
|
||||
"OK"
|
||||
bar()
|
||||
"OK"
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:4 box
|
||||
// LINENUMBERS JVM
|
||||
// test.kt:5 box
|
||||
// LINENUMBERS
|
||||
// test.kt:8 box
|
||||
// test.kt:9 box
|
||||
// LINENUMBERS JVM
|
||||
// test.kt:6 invoke
|
||||
// test.kt:7 invoke
|
||||
// LINENUMBERS JVM_IR
|
||||
// test.kt:6 box$bar
|
||||
// test.kt:7 box$bar
|
||||
// LINENUMBERS
|
||||
// test.kt:10 box
|
||||
// test.kt:11 box
|
||||
+8
-10
@@ -11,13 +11,11 @@ fun f(block: () -> Unit) {
|
||||
fun g() {}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:11
|
||||
// test.kt:4
|
||||
// test.kt:-1
|
||||
// test.kt:-1
|
||||
// test.kt:8
|
||||
// test.kt:9
|
||||
// test.kt:5
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 f
|
||||
// test.kt:11 g
|
||||
// test.kt:4 invoke
|
||||
// test.kt:8 f
|
||||
// test.kt:9 f
|
||||
// test.kt:5 box
|
||||
|
||||
+19
-19
@@ -42,22 +42,22 @@ inline fun html(init: () -> Unit) {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:19
|
||||
// test.kt:7
|
||||
// test.kt:9
|
||||
// 1.kt:18
|
||||
// 1.kt:6
|
||||
// test.kt:10
|
||||
// 1.kt:14
|
||||
// 1.kt:10
|
||||
// 1.kt:11
|
||||
// test.kt:11
|
||||
// test.kt:12
|
||||
// 1.kt:12
|
||||
// 1.kt:14
|
||||
// test.kt:13
|
||||
// 1.kt:7
|
||||
// 1.kt:18
|
||||
// test.kt:15
|
||||
// test.kt:19
|
||||
// test.kt:21
|
||||
// test.kt:19 box
|
||||
// test.kt:7 box
|
||||
// test.kt:9 box
|
||||
// 1.kt:18 box
|
||||
// 1.kt:6 box
|
||||
// test.kt:10 box
|
||||
// 1.kt:14 box
|
||||
// 1.kt:10 box
|
||||
// 1.kt:11 box
|
||||
// test.kt:11 box
|
||||
// test.kt:12 box
|
||||
// 1.kt:12 box
|
||||
// 1.kt:14 box
|
||||
// test.kt:13 box
|
||||
// 1.kt:7 box
|
||||
// 1.kt:18 box
|
||||
// test.kt:15 box
|
||||
// test.kt:19 box
|
||||
// test.kt:21 box
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
// FILE: test.kt
|
||||
|
||||
class A {
|
||||
val prop : Int
|
||||
get() {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
fun box() {
|
||||
A().prop
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:11 box
|
||||
// test.kt:3 <init>
|
||||
// test.kt:11 box
|
||||
// test.kt:6 getProp
|
||||
// test.kt:11 box
|
||||
// test.kt:12 box
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
args[0]
|
||||
}
|
||||
|
||||
fun box() {
|
||||
main(arrayOf("OK"))
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:8 box
|
||||
// test.kt:4 main
|
||||
// test.kt:5 main
|
||||
// test.kt:9 box
|
||||
+13
-13
@@ -1,4 +1,4 @@
|
||||
//FILE: test.kt
|
||||
// FILE: test.kt
|
||||
fun box() {
|
||||
val n = 3
|
||||
val k = foo(n)
|
||||
@@ -12,15 +12,15 @@ fun foo(n :Int ) : Int {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:11
|
||||
// test.kt:8
|
||||
// test.kt:11
|
||||
// test.kt:8
|
||||
// test.kt:9
|
||||
// test.kt:11
|
||||
// test.kt:11
|
||||
// test.kt:4
|
||||
// test.kt:5
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 foo
|
||||
// test.kt:11 foo
|
||||
// test.kt:8 foo
|
||||
// test.kt:11 foo
|
||||
// test.kt:8 foo
|
||||
// test.kt:9 foo
|
||||
// test.kt:11 foo
|
||||
// test.kt:11 foo
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
|
||||
+7
-6
@@ -1,5 +1,5 @@
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
fun ifoo(ok: String = "OK"): String {
|
||||
return ok
|
||||
}
|
||||
@@ -8,9 +8,10 @@ fun box(): String {
|
||||
return ifoo()
|
||||
}
|
||||
|
||||
// FORCE_STEP_INTO
|
||||
// LINENUMBERS
|
||||
// test.kt:8
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:3
|
||||
// test.kt:8
|
||||
// test.kt:8 box
|
||||
// test.kt:3 ifoo$default (synthetic)
|
||||
// test.kt:4 ifoo
|
||||
// test.kt:3 ifoo$default (synthetic)
|
||||
// test.kt:8 box
|
||||
@@ -9,7 +9,7 @@ fun box(): String {
|
||||
}
|
||||
// TODO: IR Backend behaves like simpleDefaultArg: 8,3,4, _3_ ,8
|
||||
// LINENUMBERS
|
||||
// test.kt:8
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:8
|
||||
// test.kt:8 box
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:8 box
|
||||
@@ -11,8 +11,8 @@ fun box(): String {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:10
|
||||
// test.kt:5
|
||||
// test.kt:3
|
||||
// test.kt:6
|
||||
// test.kt:10
|
||||
// test.kt:10 box
|
||||
// test.kt:5 box
|
||||
// test.kt:3 box
|
||||
// test.kt:6 box
|
||||
// test.kt:10 box
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// FILE: test.kt
|
||||
|
||||
inline fun inlineFun(s: () -> Unit) {
|
||||
s()
|
||||
}
|
||||
|
||||
fun box() {
|
||||
inlineFun {
|
||||
"OK"
|
||||
}
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:8 box
|
||||
// test.kt:4 box
|
||||
// test.kt:9 box
|
||||
// test.kt:10 box
|
||||
// test.kt:5 box
|
||||
// test.kt:11 box
|
||||
+11
-11
@@ -1,4 +1,4 @@
|
||||
//FILE: test.kt
|
||||
// FILE: test.kt
|
||||
fun box() {
|
||||
val a = 1
|
||||
val b = 2
|
||||
@@ -15,13 +15,13 @@ fun throwIfLess(a: Int, b: Int) {
|
||||
throw java.lang.IllegalStateException()
|
||||
}
|
||||
// LINENUMBERS
|
||||
// test.kt:3
|
||||
// test.kt:4
|
||||
// test.kt:5
|
||||
// test.kt:6
|
||||
// test.kt:14
|
||||
// test.kt:15
|
||||
// test.kt:7
|
||||
// test.kt:8
|
||||
// test.kt:14
|
||||
// test.kt:15
|
||||
// test.kt:3 box
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
// test.kt:6 box
|
||||
// test.kt:14 throwIfLess
|
||||
// test.kt:15 throwIfLess
|
||||
// test.kt:7 box
|
||||
// test.kt:8 box
|
||||
// test.kt:14 throwIfLess
|
||||
// test.kt:15 throwIfLess
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun foo() = prop
|
||||
|
||||
val prop = 1
|
||||
|
||||
fun box() {
|
||||
foo()
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:8 box
|
||||
// test.kt:3 foo
|
||||
// test.kt:8 box
|
||||
// test.kt:9 box
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
// FILE: test.kt
|
||||
|
||||
interface A {
|
||||
fun foo() = 32
|
||||
|
||||
fun bar(): Int {
|
||||
return foo()
|
||||
}
|
||||
}
|
||||
|
||||
fun box() {
|
||||
(object : A {}).bar()
|
||||
}
|
||||
|
||||
// The JVM backend generates non-synthetic overrides of foo and bar
|
||||
// in the object both with line number 12. That means that there will
|
||||
// be steps on line number 12 on entry and exit to both bar and foo.
|
||||
|
||||
// TODO: Is this what we want? Should they be marked as bridges instead?
|
||||
// Doesn't look like the intellij debugger skips non-synthetic bridges?
|
||||
// There seems to be some heuristics in intellij dealing with this as
|
||||
// the stepping behavior with repeated step-into is mostly OK.
|
||||
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// The JVM_IR backend generates non-synthetic overrides of foo and bar
|
||||
// with no line numbers. That leads to steps on line -1 but only on
|
||||
// exit from bar and foo.
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:12 box
|
||||
// test.kt:12 <init>
|
||||
// test.kt:12 box
|
||||
// test.kt:12 bar
|
||||
// test.kt:7 bar
|
||||
// test.kt:12 foo
|
||||
// test.kt:4 foo
|
||||
// test.kt:12 foo
|
||||
// test.kt:7 bar
|
||||
// test.kt:12 bar
|
||||
// test.kt:12 box
|
||||
// test.kt:13 box
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun foo(shouldThrow: Boolean) {
|
||||
try {
|
||||
if (shouldThrow) throw Exception()
|
||||
} catch (e: Exception) {
|
||||
"OK"
|
||||
}
|
||||
"OK"
|
||||
}
|
||||
|
||||
fun box() {
|
||||
foo(false)
|
||||
foo(true)
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:13 box
|
||||
// test.kt:4 foo
|
||||
// test.kt:5 foo
|
||||
// test.kt:9 foo
|
||||
// test.kt:10 foo
|
||||
// test.kt:14 box
|
||||
// test.kt:4 foo
|
||||
// test.kt:5 foo
|
||||
// test.kt:6 foo
|
||||
// test.kt:7 foo
|
||||
// test.kt:9 foo
|
||||
// test.kt:10 foo
|
||||
// test.kt:15 box
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
fun box(): String {
|
||||
run { "O" + "K" }
|
||||
run {
|
||||
@@ -9,10 +9,10 @@ fun box(): String {
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:4
|
||||
// fake.kt:1
|
||||
// test.kt:4
|
||||
// test.kt:5
|
||||
// test.kt:6
|
||||
// test.kt:5
|
||||
// test.kt:8
|
||||
// test.kt:4 box
|
||||
// fake.kt:1 box
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
// test.kt:6 box
|
||||
// test.kt:5 box
|
||||
// test.kt:8 box
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
// FILE: test.kt
|
||||
|
||||
fun box() {
|
||||
var x = 2
|
||||
while (--x > 0) {
|
||||
"OK"
|
||||
}
|
||||
|
||||
x = 2
|
||||
do {
|
||||
"OK"
|
||||
} while (--x > 0)
|
||||
}
|
||||
|
||||
// LINENUMBERS
|
||||
// test.kt:4 box
|
||||
// test.kt:5 box
|
||||
// test.kt:6 box
|
||||
// test.kt:5 box
|
||||
// test.kt:9 box
|
||||
// test.kt:11 box
|
||||
// test.kt:12 box
|
||||
// test.kt:11 box
|
||||
// test.kt:12 box
|
||||
// test.kt:13 box
|
||||
Reference in New Issue
Block a user