diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenClosures.java | 14 |
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) |
