aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-08-27 21:47:31 +0100
committerMichael Williamson <mike@zwobble.org>2023-08-27 21:47:31 +0100
commit03a34c054113843846a4eaf4fbd24f9dd99c826e (patch)
treeefde7f1dab58e78e6fc9d534947c461204dc36c5 /src/test/java
parent0110c68debe431369dcd4f107daf142d478b8496 (diff)
Add Patio loop instructions
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java37
-rw-r--r--src/test/java/org/shedlang/compiler/patio/instructions/Patio.java12
2 files changed, 49 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
index 8f1c4762..0a214a26 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
@@ -364,6 +364,43 @@ public class PatioSerializerTests {
}
@Test
+ public void canSerializeLoop() {
+ var instruction = Patio.loop(
+ List.of(
+ Patio.localStore(Patio.localRef("x"), Patio.int_(1))
+ )
+ );
+
+ var string = PatioTesting.serializeInstruction(instruction);
+
+ assertThat(string, equalTo("""
+ (
+ loop
+ (
+ (local-store (local "x") (int 1))
+ )
+ )"""));
+ }
+
+ @Test
+ public void canSerializeLoopBreak() {
+ var instruction = Patio.loopBreak();
+
+ var string = PatioTesting.serializeInstruction(instruction);
+
+ assertThat(string, equalTo("(break)"));
+ }
+
+ @Test
+ public void canSerializeLoopContinue() {
+ var instruction = Patio.loopContinue();
+
+ var string = PatioTesting.serializeInstruction(instruction);
+
+ assertThat(string, equalTo("(continue)"));
+ }
+
+ @Test
public void canSerializeMemoryLoad() {
var instruction = Patio.memoryLoad(
Patio.localRef("target"),
diff --git a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
index 90249c1d..3978bf39 100644
--- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
+++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
@@ -179,6 +179,18 @@ public class Patio {
return new PatioLocalRef(name);
}
+ public static PatioInstruction loop(List<PatioInstruction> body) {
+ return new PatioLoop(body, Sources.NULL);
+ }
+
+ public static PatioInstruction loopBreak() {
+ return new PatioLoopBreak(Sources.NULL);
+ }
+
+ public static PatioInstruction loopContinue() {
+ return new PatioLoopContinue(Sources.NULL);
+ }
+
public static PatioInstruction memoryLoad(
PatioLocalRef target,
PatioOperand pointer,