diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-14 23:01:44 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-14 23:01:44 +0100 |
| commit | eeef2f1636e2fc96c0018532d1e6945ee97c43c6 (patch) | |
| tree | faaca4f0a01417db5230435f356b50a7f36ee6d1 /src/main/java | |
| parent | 9b0f33fddc49fad7b8f341614bf083bd130783b6 (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.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(); |
