aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-22 21:00:40 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-22 21:00:40 +0000
commitec1382f68d1132071b357c2aa3b89bc8a2017d67 (patch)
treecdd019bb75db2ddfb0a4d251b91699fdb363c860 /src/main/java
parent8f0f5c7f448b49652d4a3d6be70b0e867859a6d0 (diff)
Update wasmIntConst to use exhaustive check
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java19
1 files changed, 11 insertions, 8 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 707d9a87..6d9bf4da 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -816,14 +816,17 @@ public class PatioToWasm {
}
private static WasmInstruction wasmIntConst(WasmValueType wasmValueType, int value) {
- // TODO: find a better way of doing this. Turn the number types into an enum?
- if (wasmValueType == WasmValueType.I32) {
- return new WasmI32Const(value);
- } else if (wasmValueType == WasmValueType.I64) {
- return new WasmI64Const(value);
- } else {
- throw new IllegalArgumentException("Cannot create int const for " + wasmValueType);
- }
+ return switch (wasmValueType) {
+ case WasmValueType.Number number -> {
+ yield switch (number.type()) {
+ case I32 -> new WasmI32Const(value);
+ case I64 -> new WasmI64Const(value);
+ case F32, F64 -> {
+ throw new IllegalArgumentException("Cannot create int const for " + number);
+ }
+ };
+ }
+ };
}
private static WasmInstruction wasmIntEq(WasmValueType wasmValueType) {