From 40c5d50a36ce1e38b299a779d16352fcfdc6844e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 26 Dec 2023 21:53:39 +0000 Subject: Use platform type for function return types --- .../shedlang/compiler/backends/wasm/PatioToWasm.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java index e212535a..fc28d310 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -77,7 +77,10 @@ public class PatioToWasm { patioFunctionDeclaration.params().stream() .map(param -> patioTypeToWasmValueType(param.type(), platformTarget)) .toList(), - patioTypeToWasmResultTypes(patioFunctionDeclaration.returnType()) + patioTypeToWasmResultTypes( + patioFunctionDeclaration.returnType(), + platformTarget + ) ); module = module.addImport(new WasmImport( @@ -111,7 +114,10 @@ public class PatioToWasm { } } - var wasmResultTypes = patioTypeToWasmResultTypes(patioFunctionDefinition.returnType()); + var wasmResultTypes = patioTypeToWasmResultTypes( + patioFunctionDefinition.returnType(), + platformTarget + ); var context = generateInstructions( patioFunctionDefinition.body(), @@ -675,8 +681,13 @@ public class PatioToWasm { return platformTarget.patioIntType(); } - private static List patioTypeToWasmResultTypes(PatioType type) { - return type instanceof PatioVoidType ? List.of() : List.of(WasmValueType.I32); + private static List patioTypeToWasmResultTypes( + PatioType type, + WasmTarget platformTarget + ) { + return type instanceof PatioVoidType + ? List.of() + : List.of(patioTypeToWasmValueType(type, platformTarget)); } private static class Context { -- cgit v1.2.3