// WITH_COROUTINES
// WITH_STDLIB
// FILE: test.kt
package test

inline suspend fun f(crossinline x: suspend () -> Unit) =
    object { suspend fun foo() = x() }.foo()

// FILE: main.kt
import test.*
import kotlin.coroutines.*
import helpers.*

inline suspend fun g(crossinline x: () -> Unit) =
    f(x)

var result: String = "fail"

inline suspend fun h(crossinline x: () -> String) =
    g { result = x() }

fun box(): String {
    suspend { h { "OK" } }.startCoroutine(EmptyContinuation)
    return result
}
