[Wasm] Imporove external interface support
* Support boxing/unboxing when casting to Any * Support ===, equals, hashCode, toString * Support adapting String in interop boundary
This commit is contained in:
@@ -9,6 +9,20 @@ fun makeC(x: Int): C = C(x)
|
||||
@JsExport
|
||||
fun getX(c: C): Int = c.x
|
||||
|
||||
@JsExport
|
||||
fun getString(s: String): String = "Test string $s";
|
||||
|
||||
@JsExport
|
||||
fun isEven(x: Int): Boolean = x % 2 == 0
|
||||
|
||||
external interface EI
|
||||
|
||||
@JsExport
|
||||
fun eiAsAny(ei: EI): Any = ei
|
||||
|
||||
@JsExport
|
||||
fun anyAsEI(any: Any): EI = any as EI
|
||||
|
||||
fun box(): String = "OK"
|
||||
|
||||
// FILE: jsExport__after.js
|
||||
@@ -16,4 +30,16 @@ fun box(): String = "OK"
|
||||
const c = main.makeC(300);
|
||||
if (main.getX(c) !== 300) {
|
||||
throw "Fail 1";
|
||||
}
|
||||
|
||||
if (main.getString("2") !== "Test string 2") {
|
||||
throw "Fail 2";
|
||||
}
|
||||
|
||||
if (main.isEven(31) !== false || main.isEven(10) !== true) {
|
||||
throw "Fail 3";
|
||||
}
|
||||
|
||||
if (main.anyAsEI(main.eiAsAny({x:10})).x !== 10) {
|
||||
throw "Fail 4";
|
||||
}
|
||||
Reference in New Issue
Block a user