38 lines
1.2 KiB
Kotlin
Vendored
38 lines
1.2 KiB
Kotlin
Vendored
fun foo(x: Int, y: Int, z: String): Int = js("x + y + Number(z)")
|
|
|
|
val x: String = js("typeof 10")
|
|
|
|
fun fooDefault(x: Int = 1, y: Int? = 2, z: String? = "3"): Int =
|
|
js("x + y + Number(z)")
|
|
|
|
external interface EIA
|
|
external class EIB : EIA
|
|
|
|
val eia10: EIA = js("'10'")
|
|
val eib1000: EIB = js("'1000'")
|
|
|
|
fun <T : EIA> fooDefaultT(x: T? = null): T? =
|
|
js("x")
|
|
|
|
fun fooVararg(i: Int, vararg x: Int): Int =
|
|
js("x[i]")
|
|
|
|
fun box(): String {
|
|
val res = foo(10, 20, z = "30")
|
|
if (res != 60) return "Wrong foo: $res"
|
|
if (x != "number") return "Wrong x: $x"
|
|
|
|
if (fooDefault() != 6) return "Wrong fooDefault 1"
|
|
if (fooDefault(x = 100, y = 200, z = "300") != 600) return "Wrong fooDefault 2"
|
|
if (fooDefault(y = 200, z = "300") != 501) return "Wrong fooDefault 3"
|
|
|
|
if (fooDefaultT<EIA>() != null) return "Wrong fooDefaultT 1"
|
|
if (fooDefaultT<EIA>(eia10).toString() != "10") return "Wrong fooDefaultT 2"
|
|
if (fooDefaultT<EIB>(eib1000).toString() != "1000") return "Wrong fooDefaultT 3"
|
|
|
|
if (fooVararg(0, 1) != 1) return "Wrong fooVararg 1"
|
|
if (fooVararg(2, 1, 2, 3) != 3) return "Wrong fooVararg 2"
|
|
if (fooVararg(2, 1, *intArrayOf(2, 3)) != 3) return "Wrong fooVararg 3"
|
|
|
|
return "OK"
|
|
} |