aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
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(