aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-26 22:12:42 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-26 22:14:19 +0000
commitf09f8b2d16b5a353f395665927ef61a30c42b564 (patch)
tree3d1cda97aaceef5ded23bf1f65cff7aff94dc684 /src/main/java
parent72eebd7297ac2cd992fefede9a4140432a2dede6 (diff)
Determine correct Wasm type for Patio types
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java16
1 files changed, 14 insertions, 2 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 28a384e8..b2476da8 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -685,8 +685,20 @@ public class PatioToWasm {
PatioType type,
WasmTarget platformTarget
) {
- // TODO: handle 32-bit values on wasm64
- return platformTarget.patioIntType();
+ return switch (type) {
+ case PatioBoolType patioBoolType ->
+ WasmValueType.I32;
+ case PatioByteType patioByteType ->
+ WasmValueType.I32;
+ case PatioDataPointerType patioDataPointerType ->
+ platformTarget.dataPointerType();
+ case PatioFunctionPointerType patioFunctionPointerType ->
+ platformTarget.functionPointerType();
+ case PatioIntType patioIntType ->
+ platformTarget.patioIntType();
+ case PatioVoidType patioVoidType ->
+ throw new IllegalArgumentException("Cannot have void values");
+ };
}
private static List<WasmValueType> patioTypeToWasmResultTypes(