diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java | 19 |
1 files changed, 15 insertions, 4 deletions
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<WasmValueType> patioTypeToWasmResultTypes(PatioType type) { - return type instanceof PatioVoidType ? List.of() : List.of(WasmValueType.I32); + private static List<WasmValueType> patioTypeToWasmResultTypes( + PatioType type, + WasmTarget platformTarget + ) { + return type instanceof PatioVoidType + ? List.of() + : List.of(patioTypeToWasmValueType(type, platformTarget)); } private static class Context { |
