blob: 3ba30a1c5773bdaaf335838d9902cdbd6d94a61e [file]
// TARGET_BACKEND: JS_IR, JS_IR_ES6
// ^^^ uses `external interface`, `@nativeInvoke` and `definedExternally`, which are JS-only
// SKIP_IR_DESERIALIZATION_CHECKS
// ^^^ KT-88479: `$$delegate_0` of an external companion gains the `external` flag over a KLIB round-trip
// KJS_WITH_FULL_RUNTIME
// KT-40126
// MODULE: lib
// FILE: l.kt
@file:Suppress("EXTERNAL_DELEGATION")
@Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE")
external interface MySymbol {
companion object : MySymbolConstructor by definedExternally
}
external interface MySymbolConstructor {
@nativeInvoke
operator fun invoke(description: String = definedExternally): Any
}
// MODULE: main(lib)
// FILE: f.kt
fun foo(ee: MySymbol?) = "OK"
fun box() = foo(null)