39 lines
885 B
Kotlin
Vendored
39 lines
885 B
Kotlin
Vendored
// IGNORE_BACKEND: JS_IR
|
|
// EXPECTED_REACHABLE_NODES: 1286
|
|
package foo
|
|
|
|
external class Function(vararg argsAndCode: String) {
|
|
@nativeInvoke
|
|
operator fun invoke(a: Any?): Any? = definedExternally
|
|
|
|
@nativeInvoke
|
|
fun baz(a: Any?, b: Any?): Any? = definedExternally
|
|
}
|
|
|
|
@nativeInvoke
|
|
operator fun Function.invoke(a: Any?, b: Any?): Any? = definedExternally
|
|
|
|
@nativeInvoke
|
|
fun Function.bar(a: Any?, b: Any?): Any? = definedExternally
|
|
|
|
object t{}
|
|
|
|
fun box(): String {
|
|
val f = Function("a", "return a")
|
|
val g = Function("a", "b", "return a + b")
|
|
|
|
assertEquals(1, f(1))
|
|
assertEquals("ok", f("ok"))
|
|
assertEquals(t, f(t))
|
|
|
|
assertEquals(5, g(1, 4))
|
|
assertEquals("ok34", g("ok", 34))
|
|
|
|
assertEquals(5, g.baz(1, 4))
|
|
assertEquals("ok34", g.baz("ok", 34))
|
|
|
|
assertEquals(5, g.bar(1, 4))
|
|
assertEquals("ok34", g.bar("ok", 34))
|
|
|
|
return "OK"
|
|
} |