aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-15 11:52:45 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-15 11:52:45 +0000
commitc60b51aa2a950db60c3a749734da0968fae95a5a (patch)
tree226c998310db9ddf6716b67281b98deb1ea8bddd /src/main/java
parent7fbdae255cbaf850d88488deb6e2f58defd65f41 (diff)
Add ShidInstruction::isTerminator()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShedEffectHandlerBreak.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidBlock.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidCall.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineEffect.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java5
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineStruct.java5
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidDiscard.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidDuplicate.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidFieldLoad.java5
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidIf.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidInstruction.java2
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidIntAdd.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidIntEquals.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidIntNotEqual.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidIntSub.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalDrop.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalLoad.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalStore.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidLoop.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopBreak.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopContinue.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceFieldStore.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceImport.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidPushBool.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidPushInt.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidPushString.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidPushUnit.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidResume.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidReturn.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidStringAdd.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidSwitch.java5
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidTry.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleCreate.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleGet.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidVarLoad.java4
-rw-r--r--src/main/java/org/shedlang/compiler/shid/instructions/ShidVarStore.java4
36 files changed, 146 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShedEffectHandlerBreak.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShedEffectHandlerBreak.java
index fc27b8c1..156352b8 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShedEffectHandlerBreak.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShedEffectHandlerBreak.java
@@ -11,4 +11,8 @@ public record ShedEffectHandlerBreak(
UserDefinedEffect effect,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return true;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidBlock.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidBlock.java
index 7ea21ccf..cfecb515 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidBlock.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidBlock.java
@@ -13,4 +13,8 @@ public record ShidBlock(
List<ShidInstruction> instructions,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return instructions.stream().anyMatch(ShidInstruction::isTerminator);
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidCall.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidCall.java
index bb720696..c275fef7 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidCall.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidCall.java
@@ -22,4 +22,8 @@ public record ShidCall(
List<String> namedArgNames,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineEffect.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineEffect.java
index cbd24307..d3465539 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineEffect.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineEffect.java
@@ -11,4 +11,8 @@ public record ShidDefineEffect(
UserDefinedEffect effect,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java
index 5ae8bf7a..3b4ce458 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineFunction.java
@@ -30,6 +30,11 @@ public record ShidDefineFunction(
FUNCTION,
}
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
+
public static Builder builder() {
return new Builder(
"f",
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineStruct.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineStruct.java
index 82d165e6..715905ec 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineStruct.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDefineStruct.java
@@ -18,4 +18,9 @@ public record ShidDefineStruct(
public record Field(String name, Source source) {
}
+
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDiscard.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDiscard.java
index ac5940d2..75e6cec6 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDiscard.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDiscard.java
@@ -6,4 +6,8 @@ import org.shedlang.compiler.sources.Source;
* Pop a value from the temporary value stack and discard it.
*/
public record ShidDiscard(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDuplicate.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDuplicate.java
index 29714cd3..50610b0f 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidDuplicate.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidDuplicate.java
@@ -6,4 +6,8 @@ import org.shedlang.compiler.sources.Source;
* Duplicates the value on top of the temporary value stack.
*/
public record ShidDuplicate(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidFieldLoad.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidFieldLoad.java
index 0df10550..fb2b2749 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidFieldLoad.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidFieldLoad.java
@@ -19,4 +19,9 @@ public record ShidFieldLoad(
record Namespace(NamespaceName name) implements Receiver {}
record Struct(StructType type) implements Receiver {}
}
+
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIf.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIf.java
index d3a05919..9f49b65b 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIf.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIf.java
@@ -16,4 +16,8 @@ public record ShidIf(
ShidBlock falseBody,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidInstruction.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidInstruction.java
index 7f5a33e2..07f8b4a9 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidInstruction.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidInstruction.java
@@ -5,5 +5,7 @@ import org.shedlang.compiler.sources.Source;
public sealed interface ShidInstruction
permits ShedEffectHandlerBreak, ShidBlock, ShidCall, ShidDefineEffect, ShidDefineFunction, ShidDefineStruct, ShidDiscard, ShidDuplicate, ShidFieldLoad, ShidIf, ShidIntAdd, ShidIntEquals, ShidIntNotEqual, ShidIntSub, ShidLocalDrop, ShidLocalLoad, ShidLocalStore, ShidLoop, ShidLoopBreak, ShidLoopContinue, ShidNamespaceFieldStore, ShidNamespaceImport, ShidPushBool, ShidPushInt, ShidPushString, ShidPushUnit, ShidResume, ShidReturn, ShidStringAdd, ShidSwitch, ShidTry, ShidTupleCreate, ShidTupleGet, ShidVarLoad, ShidVarStore {
+ boolean isTerminator();
+
Source source();
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntAdd.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntAdd.java
index ed570cef..7465b5ae 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntAdd.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntAdd.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* together, and push the result onto the temporary value stack.
*/
public record ShidIntAdd(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntEquals.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntEquals.java
index f5543143..600636d3 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntEquals.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntEquals.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* a Bool onto the temporary value stack: true if equal, false if not equal.
*/
public record ShidIntEquals(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntNotEqual.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntNotEqual.java
index 60eea7c5..d3e4fe4b 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntNotEqual.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntNotEqual.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* a Bool onto the temporary value stack: true if not equal, false if equal.
*/
public record ShidIntNotEqual(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntSub.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntSub.java
index 3fbd3e09..48182a4d 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntSub.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidIntSub.java
@@ -8,4 +8,8 @@ import org.shedlang.compiler.sources.Source;
* operand, then push the result onto the temporary value stack.
*/
public record ShidIntSub(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalDrop.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalDrop.java
index 582de263..fd9bf37b 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalDrop.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalDrop.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* into that local.
*/
public record ShidLocalDrop(String name, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalLoad.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalLoad.java
index a1de23fe..8817e4e0 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalLoad.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalLoad.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* stack.
*/
public record ShidLocalLoad(String name, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalStore.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalStore.java
index 003aaf40..bcac4e9e 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalStore.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLocalStore.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* given name.
*/
public record ShidLocalStore(String name, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoop.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoop.java
index 6ab81b47..ceb11c04 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoop.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoop.java
@@ -12,4 +12,8 @@ public record ShidLoop(
ShidBlock body,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopBreak.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopBreak.java
index 6e2e70d7..d6db4c52 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopBreak.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopBreak.java
@@ -6,4 +6,8 @@ import org.shedlang.compiler.sources.Source;
* Jump to the end of the enclosing <code>loop</code> instruction's body.
*/
public record ShidLoopBreak(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return true;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopContinue.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopContinue.java
index d6ee6c3d..1d0af6b2 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopContinue.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidLoopContinue.java
@@ -6,4 +6,8 @@ import org.shedlang.compiler.sources.Source;
* Jump to the start of the enclosing <code>loop</code> instruction's body.
*/
public record ShidLoopContinue(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return true;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceFieldStore.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceFieldStore.java
index 583dbb5f..dacf8a3f 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceFieldStore.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceFieldStore.java
@@ -12,4 +12,8 @@ public record ShidNamespaceFieldStore(
String fieldName,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceImport.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceImport.java
index 9e93a95f..ca88dfd1 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceImport.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidNamespaceImport.java
@@ -10,4 +10,8 @@ public record ShidNamespaceImport(
NamespaceName namespaceName,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushBool.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushBool.java
index c92e8959..f1a71997 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushBool.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushBool.java
@@ -9,4 +9,8 @@ public record ShidPushBool(
boolean value,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushInt.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushInt.java
index e4673e9b..d8da8f31 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushInt.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushInt.java
@@ -8,4 +8,8 @@ import java.math.BigInteger;
* Push an integer onto the temporary value stack.
*/
public record ShidPushInt(BigInteger value, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushString.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushString.java
index b0fa0183..f53a8aef 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushString.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushString.java
@@ -6,4 +6,8 @@ import org.shedlang.compiler.sources.Source;
* Push a string onto the temporary value stack.
*/
public record ShidPushString(String value, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushUnit.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushUnit.java
index 85e5363e..3504204f 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushUnit.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidPushUnit.java
@@ -6,4 +6,8 @@ import org.shedlang.compiler.sources.Source;
* Push the unit value onto the temporary value stack.
*/
public record ShidPushUnit(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidResume.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidResume.java
index 12eaac48..2a2e1b4d 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidResume.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidResume.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* the current effect handler method back to the effect call.
*/
public record ShidResume(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return true;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidReturn.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidReturn.java
index fd0228fe..ec3609c2 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidReturn.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidReturn.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* the current function.
*/
public record ShidReturn(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return true;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidStringAdd.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidStringAdd.java
index fea26d1e..606e613b 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidStringAdd.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidStringAdd.java
@@ -9,4 +9,8 @@ import org.shedlang.compiler.sources.Source;
* stack.
*/
public record ShidStringAdd(Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidSwitch.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidSwitch.java
index c1596084..8a06adf7 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidSwitch.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidSwitch.java
@@ -18,4 +18,9 @@ public record ShidSwitch(
) implements ShidInstruction {
public record Case(StructType caseType, ShidBlock body, Source source) {
}
+
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidTry.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidTry.java
index ac9419f0..3d701d20 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidTry.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidTry.java
@@ -23,4 +23,8 @@ public record ShidTry(
ShidBlock body,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleCreate.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleCreate.java
index 3559be91..4cfbb58b 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleCreate.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleCreate.java
@@ -11,4 +11,8 @@ public record ShidTupleCreate(
int elementCount,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleGet.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleGet.java
index a8a12b1d..585d3ccb 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleGet.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidTupleGet.java
@@ -11,4 +11,8 @@ public record ShidTupleGet(
int elementCount,
Source source
) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarLoad.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarLoad.java
index ad0ae2ca..1e22c4a8 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarLoad.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarLoad.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* temporary value stack.
*/
public record ShidVarLoad(String name, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarStore.java b/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarStore.java
index f9d2fb51..4858c202 100644
--- a/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarStore.java
+++ b/src/main/java/org/shedlang/compiler/shid/instructions/ShidVarStore.java
@@ -7,4 +7,8 @@ import org.shedlang.compiler.sources.Source;
* given name.
*/
public record ShidVarStore(String name, Source source) implements ShidInstruction {
+ @Override
+ public boolean isTerminator() {
+ return false;
+ }
}