Files
kotlin-fork/js/js.translator/testData/box/inline/callableReferenceClassMethod.kt
2022-08-08 17:40:45 +00:00

42 lines
866 B
Kotlin
Vendored

typealias Callback = () -> Unit
class CallbackComposer {
inline fun addTo(noinline block: Callback) {
asDynamic().push(block)
}
}
inline fun CallbackComposer.addToExtension(noinline block: Callback) {
asDynamic().push(block)
}
fun createCallbackBuilder(builder: CallbackComposer.() -> Unit): () -> Callback = {
val callbacks = arrayOf<Callback>()
builder(callbacks.unsafeCast<CallbackComposer>())
val composed: Callback = {
for (cb in callbacks) {
cb()
}
}
composed
}
var retVal = ""
fun appendToRetVal(c: String): () -> Unit = {
retVal += c
}
fun box(): String {
val callbackBuilder = createCallbackBuilder {
appendToRetVal("O").also(::addTo)
appendToRetVal("K").also(::addToExtension)
}
val callback = callbackBuilder()
callback()
return retVal
}