| // TARGET_BACKEND: WASM |
| // FILE: wasmModule.mjs |
| |
| /* |
| (module |
| (func (export "addTwo") (param i32 i32) (result i32) |
| local.get 0 |
| local.get 1 |
| i32.add)) |
| */ |
| let bytes = [0, 97, 115, 109, 1, 0, 0, 0, 1, 7, 1, 96, 2, 127, 127, 1, 127, 3, |
| 2, 1, 0, 7, 10, 1, 6, 97, 100, 100, 84, 119, 111, 0, 0, 10, 9, 1, |
| 7, 0, 32, 0, 32, 1, 106, 11, 0, 10, 4, 110, 97, 109, 101, 2, 3, 1, 0, 0]; |
| let buffer = (new Int8Array(bytes)).buffer; |
| let module = new WebAssembly.Module(buffer); |
| let instance = new WebAssembly.Instance(module); |
| export let addTwo = instance.exports.addTwo; |
| |
| // FILE: main.kt |
| |
| import kotlin.wasm.WasmImport |
| |
| /* |
| Here we pass export of another Wasm module to our import directly without JS layer. |
| This enables strict type check without JS conversons. |
| For instance, recursion groups of function types must fully match. |
| */ |
| @WasmImport("./wasmModule.mjs") |
| external fun addTwo(a: Int, b: Int): Int |
| |
| fun box(): String { |
| if (addTwo(100, 200) != 300) return "Fail1" |
| return "OK" |
| } |