9d099348ba
Merge-request: KT-MR-8152
66 lines
1.3 KiB
Kotlin
Vendored
66 lines
1.3 KiB
Kotlin
Vendored
// TARGET_BACKEND: WASM
|
|
|
|
// FILE: wasmImport.kt
|
|
import kotlin.wasm.WasmImport
|
|
|
|
@WasmImport("foo")
|
|
external fun inc1(x: Int): Int
|
|
|
|
@WasmImport("~!@#\$%^&*()_+`-={}|[]\\\\:\\\";'<>?,./", "inc2")
|
|
external fun inc2(x: Int): Int
|
|
|
|
@WasmImport("./bar.mjs", "inc3")
|
|
external fun inc3(x: Int): Int
|
|
|
|
@WasmImport("./bar.mjs", "giveMeNumber")
|
|
external fun giveMeNumber(x: Boolean)
|
|
|
|
@JsExport
|
|
fun myBox(): String {
|
|
if (inc1(5) != 6) return "KFail1"
|
|
if (inc2(5) != 6) return "KFail2"
|
|
if (inc3(5) != 6) return "KFail3"
|
|
|
|
// Test that booleans are translated as i32
|
|
giveMeNumber(true)
|
|
giveMeNumber(false)
|
|
|
|
return "OK"
|
|
}
|
|
|
|
var initialized: Int = 0
|
|
|
|
@JsExport
|
|
fun getInitialized(): Int = initialized
|
|
|
|
fun main() {
|
|
initialized = 100
|
|
}
|
|
|
|
// FILE: entry.mjs
|
|
import { instantiate } from "./index.uninstantiated.mjs";
|
|
|
|
let inc = x => x + 1;
|
|
|
|
let imports = {
|
|
"foo": { inc1 : inc },
|
|
"~!@#\$%^&*()_+\`-={}|[]\\\\:\\\";'<>?,./" : { inc2 : inc },
|
|
"./bar.mjs" : {
|
|
inc3 : inc,
|
|
giveMeNumber(x) {
|
|
if (typeof x !== 'number') {
|
|
throw "Not a number!";
|
|
}
|
|
},
|
|
},
|
|
}
|
|
|
|
let { exports } = await instantiate(imports);
|
|
|
|
if (exports.getInitialized() !== 100) {
|
|
throw "Fail1"
|
|
}
|
|
|
|
if (exports.myBox() != "OK") {
|
|
throw "Fail2"
|
|
} |