tests: Update box tests (1053418:id)

This commit is contained in:
Ilya Matveev
2017-04-27 15:19:22 +07:00
committed by ilmat192
parent 0859abbb9d
commit 55c3b79786
21 changed files with 255 additions and 5 deletions
@@ -0,0 +1,19 @@
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
inline fun test(noinline foo: () -> String, noinline bar: () -> String): String {
var vfoo = foo
var vbar = bar
var vres = foo
for (i in 1 .. 4) {
vres = vbar
vbar = vfoo
vfoo = vres
}
return vres()
}
// FILE: 2.kt
fun box(): String =
test({ "OK" }, { "wrong lambda" })
@@ -0,0 +1,25 @@
// FILE: 1.kt
inline fun cycle(p: String): String {
var z = p
var x = z
for (i in 1..4) {
z = x
x = z
}
return z
}
inline fun test(crossinline foo: String.() -> String): String {
val cycle = cycle("123");
{
cycle.foo()
}()
return cycle.foo()
}
// FILE: 2.kt
fun box(): String = test { "OK" }
@@ -0,0 +1,7 @@
// FILE: 1.kt
inline fun alwaysOk(s: String, fn: (String) -> String): String {
return fn(return "OK")
}
// FILE: 2.kt
fun box() = alwaysOk("what?") { it }
@@ -0,0 +1,7 @@
// FILE: 1.kt
inline fun alwaysOk(s: String, fn: (String) -> String): String {
try { return fn(return "fail") } finally { fn(return "OK") }
}
// FILE: 2.kt
fun box() = alwaysOk("what?") { it }
@@ -0,0 +1,15 @@
// FILE: 1.kt
inline fun alwaysOk(s: String, fn: (String) -> String): String {
try {
throw Exception()
}
catch(e: Exception) {
fn(return "fail")
}
finally {
fn(return "OK")
}
}
// FILE: 2.kt
fun box() = alwaysOk("what?") { it }