aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-14 23:01:44 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-14 23:01:44 +0100
commiteeef2f1636e2fc96c0018532d1e6945ee97c43c6 (patch)
treefaaca4f0a01417db5230435f356b50a7f36ee6d1 /src/main/java
parent9b0f33fddc49fad7b8f341614bf083bd130783b6 (diff)
Fix WASM function type when function has params
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java
index e6f60acf..28fe631c 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java
@@ -37,8 +37,16 @@ public class WasmCodeGenClosures {
name
);
+ var shedParams = Stream.concat(positionalParams.stream(), namedParams.stream()).toList();
+
+ var wasmParamTypes = new ArrayList<WasmValueType>();
+ wasmParamTypes.add(CLOSURE_TYPE);
+ for (var shedParam : shedParams) {
+ wasmParamTypes.add(WasmCodeGenTypes.VALUE_TYPE);
+ }
+
var closureFuncType = new WasmFuncType(
- List.of(CLOSURE_TYPE),
+ wasmParamTypes,
List.of(WasmCodeGenTypes.VALUE_TYPE)
);
@@ -47,8 +55,6 @@ public class WasmCodeGenClosures {
var closurePointer = closurePointerResult.value();
bodyContext = closurePointerResult.context();
- var shedParams = Stream.concat(positionalParams.stream(), namedParams.stream()).toList();
-
for (var shedParam : shedParams) {
var paramResult = bodyContext.addShedLocal(shedParam.name());
bodyContext = paramResult.context();