9af7316845
This, however, works only for calls of 'synchronized' only. Thus, it does not support inline functions of any kind.
39 lines
609 B
Kotlin
Vendored
39 lines
609 B
Kotlin
Vendored
fun builder(c: suspend () -> Unit) {}
|
|
|
|
private val lock = Any()
|
|
|
|
suspend fun suspensionPoint() {}
|
|
|
|
fun test() {
|
|
builder {
|
|
inlineMe {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
|
|
builder {
|
|
monitorInFinally(
|
|
{},
|
|
{ suspensionPoint() }
|
|
)
|
|
}
|
|
|
|
synchronized(lock) {
|
|
builder {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
|
|
synchronized(lock) {
|
|
object : SuspendRunnable {
|
|
override suspend fun run() {
|
|
suspensionPoint()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
interface SuspendRunnable {
|
|
suspend fun run()
|
|
}
|