aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-26 21:53:39 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-26 21:53:39 +0000
commit40c5d50a36ce1e38b299a779d16352fcfdc6844e (patch)
treedfd4f2c6fa89569ce5e3f9732e3a9cd0a475918b /src/main/java/org
parentff3ff36d82e801a6b61ce230bb82da1ecd904dc5 (diff)
Use platform type for function return types
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java19
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 {