diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-08-27 21:47:31 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-08-27 21:47:31 +0100 |
| commit | 03a34c054113843846a4eaf4fbd24f9dd99c826e (patch) | |
| tree | efde7f1dab58e78e6fc9d534947c461204dc36c5 /src/test/java | |
| parent | 0110c68debe431369dcd4f107daf142d478b8496 (diff) | |
Add Patio loop instructions
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java | 37 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/patio/instructions/Patio.java | 12 |
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, |
