Files
kotlin-fork/js/js.translator/testData/box/native/nativeInvoke.kt
T
2018-09-12 09:49:25 +03:00

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"
}