blob: 10a49a7eeb7c4df511da4b735e0dc5faf16cd098 [file]
// TARGET_BACKEND: WASM
// ^^ For JS_IR and JS_IR_ES6, we don't have and don't plan to have @WasmImport and @WasmExport annotations
// IGNORE_BACKEND: WASM_JS, WASM_WASI
// FILE: wasmImport.kt
import kotlin.wasm.WasmImport
@WasmImport("foo")
external fun inc(x: Int): Int
@JsExport
fun myBox(): String {
if (inc(5) != 6) return "KFail1"
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": { inc },
}
let { exports } = await instantiate(imports, /*runInitializer=*/false);
if (exports.getInitialized() !== 0) {
throw "Fail1"
}
exports._initialize();
if (exports.getInitialized() !== 100) {
throw "Fail2"
}
if (exports.myBox() != "OK") {
throw "Fail3"
}