From eeef2f1636e2fc96c0018532d1e6945ee97c43c6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 14 Jul 2023 23:01:44 +0100 Subject: Fix WASM function type when function has params --- .../shedlang/compiler/backends/wasm/WasmCodeGenClosures.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java') 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(); + 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(); -- cgit v1.2.3