aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-22 20:44:49 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-22 20:44:49 +0000
commit8f0f5c7f448b49652d4a3d6be70b0e867859a6d0 (patch)
treeb07d21c4fa042b6ba5835fbfb1f802622beb01b4 /src/main/java
parent6dd0bb83ea290fcf30f554185d18928e93219180 (diff)
Support any result type for Patio try
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java10
1 files changed, 6 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 c4e73446..707d9a87 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -361,6 +361,7 @@ public class PatioToWasm {
case PatioSwitch patioSwitch -> {
// TODO: use br_table?
+
var wasmBlockTypeResult = generateBlockType(patioSwitch.destinations(), context);
var wasmBlockType = wasmBlockTypeResult.value();
context = wasmBlockTypeResult.context();
@@ -399,10 +400,11 @@ public class PatioToWasm {
}
case PatioTry try_ -> {
- // TODO: don't assume we always have a Patio int
- context = context.enterTryInstruction(
- WasmBlockType.of(target.patioIntType())
- );
+ var wasmBlockTypeResult = generateBlockType(try_.destinations(), context);
+ var wasmBlockType = wasmBlockTypeResult.value();
+ context = wasmBlockTypeResult.context();
+
+ context = context.enterTryInstruction(wasmBlockType);
context = generateBlockBody(try_.body(), context);