Files
kotlin-fork/compiler/testData/codegen/boxWasmJsInterop/imperativeWrapperInitialised.kt
T
Svyatoslav Kuzmich 9d099348ba [Wasm] Disable interop adapters for WasmImport
Merge-request: KT-MR-8152
2022-12-28 17:33:51 +00:00

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