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