57 lines
911 B
Kotlin
Vendored
57 lines
911 B
Kotlin
Vendored
fun builder(c: suspend () -> Unit) {}
|
|
|
|
private val lock = Any()
|
|
|
|
suspend fun suspensionPoint() {}
|
|
|
|
fun test() {
|
|
builder {
|
|
inlineMe {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
|
|
builder {
|
|
monitorInFinally(
|
|
{},
|
|
{ suspensionPoint() }
|
|
)
|
|
}
|
|
|
|
builder {
|
|
withCrossinline {}
|
|
|
|
withCrossinline {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
|
|
synchronized(lock) {
|
|
builder {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
|
|
synchronized(lock) {
|
|
object : SuspendRunnable {
|
|
override suspend fun run() {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
interface SuspendRunnable {
|
|
suspend fun run()
|
|
}
|
|
|
|
|
|
inline fun withCrossinline(crossinline a: suspend () -> Unit): suspend () -> Unit {
|
|
val c : suspend () -> Unit = {
|
|
inlineMe {
|
|
a()
|
|
}
|
|
}
|
|
return c
|
|
}
|