Fix labeling processing on inlining: suport labeled literals

#KT-7273 Fixed
This commit is contained in:
Michael Bogdanov
2015-06-02 12:16:55 +03:00
parent f02f663167
commit 2377a10007
8 changed files with 186 additions and 16 deletions
@@ -0,0 +1,45 @@
//NO_CHECK_LAMBDA_INLINING
import test.*
fun test1() : String {
return a {
test {
return@a "OK"
}
}
}
fun test2() : String {
return test z@ {
return@z "OK"
}
}
fun test3() : String {
return test {
return@test "OK"
}
}
fun test4() : String {
return a z@ {
test {
return@z "OK"
}
}
}
fun box() : String {
if (test1() != "OK") return "fail 1: ${test1()}"
if (test2() != "OK") return "fail 2: ${test2()}"
if (test3() != "OK") return "fail 3: ${test3()}"
if (test4() != "OK") return "fail 4: ${test4()}"
return "OK"
}
@@ -0,0 +1,9 @@
package test
fun a(b: () -> String) : String {
return b()
}
inline fun test(l: () -> String): String {
return l()
}
@@ -0,0 +1,67 @@
//NO_CHECK_LAMBDA_INLINING
import test.*
fun test1(): String {
return a {
try {
test {
return@a "OK"
}
}
finally {
}
}
}
fun test2(): String {
return test z@ {
try {
return@z "OK"
}
finally {
}
}
}
fun test3(): String {
return test {
try {
return@test "OK"
}
finally {
}
}
}
fun test4(): String {
return a z@ {
try {
test {
return@z "OK"
}
}
finally {
}
}
}
fun box(): String {
if (test1() != "OK") return "fail 1: ${test1()}"
if (test2() != "OK") return "fail 2: ${test2()}"
if (test3() != "OK") return "fail 3: ${test3()}"
if (test4() != "OK") return "fail 4: ${test4()}"
return "OK"
}
@@ -0,0 +1,9 @@
package test
fun a(b: () -> String) : String {
return b()
}
inline fun test(l: () -> String): String {
return l()
}