backend/tests: Add blackbox tests from Kotlin JVM

Added tests from testData/codegen/box directory. There are blackbox tests
in other directories and they are to be added.
This commit is contained in:
Ilya Matveev
2017-01-12 19:43:20 +07:00
parent d5988297b1
commit 1b553ebfaf
2643 changed files with 66666 additions and 0 deletions
@@ -0,0 +1,21 @@
class A<T>(val x: String, val y: String, val z: T)
fun <T> foo(a: A<T>, block: (A<T>) -> String): String = block(a)
operator fun A<*>.component1() = x
object B {
operator fun A<*>.component2() = y
}
fun B.bar(): String {
operator fun <R> A<R>.component3() = z
val x = foo(A("O", "K", 123)) { (x, y, z) -> x + y + z.toString() }
if (x != "OK123") return "fail 1: $x"
return "OK"
}
fun box() = B.bar()
@@ -0,0 +1,11 @@
data class A<T, F>(val x: T, val y: F)
fun <X, Y> foo(a: A<X, Y>, block: (A<X, Y>) -> String) = block(a)
fun box(): String {
val x = foo(A("OK", 1)) { (x, y) -> x + (y.toString()) }
if (x != "OK1") return "fail1: $x"
return "OK"
}
@@ -0,0 +1,5 @@
data class A(val x: String, val y: String)
inline fun foo(a: A, block: (A) -> String): String = block(a)
fun box() = foo(A("O", "K")) { (x, y) -> x + y }
@@ -0,0 +1,11 @@
data class A(val x: String, val y: String)
fun foo(a: A, block: (Int, A, String) -> String): String = block(1, a, "#")
fun box(): String {
val x = foo(A("O", "K")) { i, (x, y), v -> i.toString() + x + y + v }
if (x != "1OK#") return "fail 1: $x"
return "OK"
}
@@ -0,0 +1,5 @@
data class A(val x: String, val y: String)
fun foo(a: A, block: (A) -> String): String = block(a)
fun box() = foo(A("O", "K")) { (x, y) -> x + y }
@@ -0,0 +1,16 @@
// WITH_RUNTIME
fun box(): String {
val r1 = listOf("O", "K", "fail").let {
(x, y) -> x + y
}
if (r1 != "OK") return "fail 1: $r1"
val r2 = listOf(Pair("O", "K")).map { (x, y) -> x + y }[0]
if (r2 != "OK") return "fail 2: $r2"
return "OK"
}
@@ -0,0 +1,9 @@
class A {
operator fun component1() = "O"
operator fun component2(): String = throw RuntimeException("fail 0")
operator fun component3() = "K"
}
fun foo(a: A, block: (A) -> String): String = block(a)
fun box() = foo(A()) { (x, _, y) -> x + y }
@@ -0,0 +1,13 @@
// WITH_RUNTIME
data class Station(
val id: String?,
val name: String,
val distance: Int)
fun box(): String {
var result = ""
// See KT-14399
listOf(Station("O", "K", 56)).forEachIndexed { i, (id, name, distance) -> result += "$id$name$distance" }
if (result != "OK56") return "fail: $result"
return "OK"
}