Remove redundant locals

Do not transform already transformed suspend lambdas
Ignore duplicates of continuation in local variable table during redundant locals elimination.
This commit is contained in:
Ilmir Usmanov
2018-02-27 19:08:37 +03:00
parent 81f3e39f29
commit 826d667398
28 changed files with 785 additions and 113 deletions
@@ -15,6 +15,7 @@ suspend inline fun test2(crossinline c: suspend () -> Unit) {
// FILE: box.kt
import kotlin.coroutines.experimental.*
import kotlin.coroutines.experimental.intrinsics.*
fun builder(c: suspend () -> Unit) {
c.startCoroutine(object: Continuation<Unit> {
@@ -30,7 +31,10 @@ fun builder(c: suspend () -> Unit) {
})
}
suspend fun calculate() = "OK"
suspend fun calculate() = suspendCoroutineOrReturn<String> {
it.resume("OK")
COROUTINE_SUSPENDED
}
fun box() : String {
var res = "FAIL 1"