Fix non local returns to functional expressions

This commit is contained in:
Michael Bogdanov
2015-04-23 17:15:33 +03:00
parent 012bc8f1db
commit 0854c601b4
7 changed files with 85 additions and 35 deletions
@@ -0,0 +1,23 @@
//NO_CHECK_LAMBDA_INLINING
fun test(): String = fun (): String {
foo { return "OK" }
return "fail"
} ()
fun test2(): String = (@l fun (): String {
foo { return@l "OK" }
return "fail"
}) ()
fun test3(): String = (@l fun bar(): String {
foo { return@bar "OK" }
return "fail"
}) ()
fun box(): String {
if (test() != "OK") return "fail 1: ${test()}"
if (test2() != "OK") return "fail 2: ${test2()}"
return test3()
}
@@ -0,0 +1,3 @@
inline fun foo(f: () -> Unit) {
f()
}