aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java14
1 files changed, 13 insertions, 1 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 5a9e0628..c63facd0 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java
@@ -9,6 +9,7 @@ import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmLocalIndex;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmFuncType;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmValueType;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@@ -118,7 +119,18 @@ public class WasmCodeGenClosures {
context = loadClosureFunctionTableIndex(closure, context);
- var funcType = new WasmFuncType(List.of(CLOSURE_TYPE), List.of(WasmCodeGenTypes.VALUE_TYPE));
+ var paramTypes = new ArrayList<WasmValueType>();
+ paramTypes.add(CLOSURE_TYPE);
+
+ var argCount = positionalArgs.size() + namedArgsByName.size();
+ for (var i = 0; i < argCount; i++) {
+ paramTypes.add(WasmCodeGenTypes.VALUE_TYPE);
+ }
+
+ var funcType = new WasmFuncType(
+ paramTypes,
+ List.of(WasmCodeGenTypes.VALUE_TYPE)
+ );
return context
.addType(funcType)