blob: a3e095efab94429fe7a4ac3c9d9ff5c22a7a666b [file]
// LANGUAGE: +ContextParameters
// WITH_STDLIB
// WITH_COROUTINES
class InContext
class MyReciever {
public suspend fun MyOutput.innerFun(): Int = 123
}
class MyOutput
// 2 - Declare the caller that calls the suspended function in a context
public fun caller(block: suspend context(InContext) MyReciever.() -> Int): MyOutput = MyOutput()
fun box(): String {
val out1 = caller { MyOutput().innerFun() }
val out2 = with (InContext()) { caller { MyOutput().innerFun() } }
val out3 = caller { with (InContext()) { MyOutput().innerFun() } }
return "OK"
}