add local variable test. This test runs box() method and checks local variable types and names avaiable at every step.

This commit is contained in:
Jiaxiang Chen
2019-10-21 17:29:04 -07:00
committed by Ilmir Usmanov
parent 6b73ef4b0b
commit 6454cfad87
11 changed files with 355 additions and 4 deletions
+20
View File
@@ -0,0 +1,20 @@
//FILE: test.kt
data class someClass(val a: Double, val b: Double)
fun box() {
val a = someClass(1.0, 2.0)
val b = a.copy(b = 3.0)
}
// IGNORE_BACKEND: JVM_IR
// LOCAL VARIABLES
// TestKt:6:
// someClass:3: a:double, b:double
// TestKt:6:
// TestKt:7: a:someClass
// someClass:3: a:double, b:double
// someClass.copy(double, double)+9: a:double, b:double
// someClass.copy$default(someClass, double, double, int, java.lang.Object)+30:
// TestKt:7: a:someClass
// TestKt:8: a:someClass, b:someClass
@@ -0,0 +1,20 @@
//FILE: test.kt
// WITH_RUNTIME
fun box() {
val map: Map<String, String> = mapOf("1" to "23")
for ((a, b)
in map) {
a + b
}
}
// IGNORE_BACKEND: JVM_IR
// LOCAL VARIABLES
// TestKt:6:
// TestKt:8: map:java.util.Collections$SingletonMap
// TestKt:7: map:java.util.Collections$SingletonMap
// TestKt:9: map:java.util.Collections$SingletonMap, a:java.lang.String, b:java.lang.String
// TestKt:7: map:java.util.Collections$SingletonMap
// TestKt:8: map:java.util.Collections$SingletonMap
// TestKt:11: map:java.util.Collections$SingletonMap
@@ -0,0 +1,20 @@
//FILE: test.kt
data class A(val x: String, val y: Int)
fun foo(a: A, block: (A) -> String): String = block(a)
fun box() {
foo(A("O", 123)) { (x, y) -> x + y }
}
// IGNORE_BACKEND: JVM_IR
// LOCAL VARIABLES
// TestKt:8:
// A:3: x:java.lang.String, y:int
// TestKt:8:
// TestKt:5: $dstr$x$y:A
// TestKt$box$1:8:
// TestKt$box$1.invoke(java.lang.Object)+8: a:A, block:TestKt$box$1
// TestKt:5: a:A, block:TestKt$box$1
// TestKt:8:
// TestKt:9:
+16
View File
@@ -0,0 +1,16 @@
//FILE: test.kt
fun foo() {
fun bar() {
}
}
fun box() {
foo()
}
// IGNORE_BACKEND: JVM_IR
// LOCAL VARIABLES
// TestKt:9:
// TestKt:4: $fun$bar$1:TestKt$foo$1
// TestKt:6: $fun$bar$1:TestKt$foo$1
// TestKt:10:
@@ -0,0 +1,49 @@
//FILE: test.kt
data class A(val x: Double = 1.0, val y: String = "", val z: Char = '0')
fun foo(a: A, block: (A, String, Int) -> String): String = block(a, "", 1)
val arrayOfA: Array<A> = Array(1) { A() }
fun box() {
foo(A()) {
(x, _, y), _, w ->
val (a, _, c) = A()
val (_, `_`, d) = A()
for ((_, q) in arrayOfA) {
}
""
}
}
// IGNORE_BACKEND: JVM_IR
// LOCAL VARIABLES
// TestKt:11:
// A:3:
// A:3: x:double, y:java.lang.String, z:char
// A:3:
// TestKt:11:
// TestKt:5: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int
// TestKt$box$1:14:
// A:3: x:double, y:java.lang.String, z:char
// A:3:
// A:3: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int, x:double, y:char
// TestKt$box$1:14: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int, x:double, y:char, a:double, c:char
// TestKt$box$1:15:
// A:3: x:double, y:java.lang.String, z:char
// A:3:
// A:3: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int, x:double, y:char, a:double, c:char
// TestKt$box$1:15: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int, x:double, y:char, a:double, c:char, _:java.lang.String, d:char
// TestKt$box$1:17:
// TestKt:7: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int, x:double, y:char, a:double, c:char, _:java.lang.String, d:char
// TestKt$box$1:17: $dstr$x$_u24__u24$y:A, $noName_1:java.lang.String, w:int, x:double, y:char, a:double, c:char, _:java.lang.String, d:char
// TestKt$box$1:21:
// TestKt$box$1.invoke(java.lang.Object, java.lang.Object, java.lang.Object)+19: a:A, block:TestKt$box$1
// TestKt:5: a:A, block:TestKt$box$1
// TestKt:11:
// TestKt:23: