aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/shedlang/compiler/stackir
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-02 14:25:46 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-02 14:26:37 +0000
commit689c9c1e8af8fd2fff2b390649a59e613e85eb6a (patch)
treec2172339570164b3d69db442bb971a5ba383cd8c /src/test/java/org/shedlang/compiler/stackir
parentae2db7337845cde0c56cd99564060b974e125f65 (diff)
Add resume instruction
Diffstat (limited to 'src/test/java/org/shedlang/compiler/stackir')
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java9
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionResumeTests.java5
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java6
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java4
4 files changed, 21 insertions, 3 deletions
diff --git a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
index 2f8c4c44..c36977cf 100644
--- a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
@@ -333,6 +333,15 @@ public class InstructionSerializerTests {
}
@Test
+ public void canSerializeResume() {
+ var instruction = Instructions.resume();
+
+ var string = serialize(instruction);
+
+ assertThat(string, equalTo("(resume)"));
+ }
+
+ @Test
public void canSerializeReturn() {
var instruction = Instructions.return_();
diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionResumeTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionResumeTests.java
index 1aa61a57..06c967f9 100644
--- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionResumeTests.java
+++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionResumeTests.java
@@ -3,8 +3,7 @@ package org.shedlang.compiler.stackir;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.ast.typed.Typed;
-import static org.shedlang.compiler.stackir.instructions.InstructionMatchers.isPushStringInstruction;
-import static org.shedlang.compiler.stackir.instructions.InstructionMatchers.isReturnInstruction;
+import static org.shedlang.compiler.stackir.instructions.InstructionMatchers.*;
import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.isSequence;
@@ -18,7 +17,7 @@ public class StackCompilerFunctionResumeTests {
assertThat(result.instructions(), isSequence(
isPushStringInstruction("hello"),
- isReturnInstruction()
+ isResumeInstruction()
));
}
}
diff --git a/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java b/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java
index a33f4f6c..34c94f0e 100644
--- a/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java
+++ b/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java
@@ -164,6 +164,12 @@ public class InstructionMatchers {
);
}
+ public static Matcher<Instruction> isResumeInstruction() {
+ return instanceOf(
+ ResumeInstruction.class
+ );
+ }
+
public static Matcher<Instruction> isReturnInstruction() {
return instanceOf(
ReturnInstruction.class
diff --git a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
index ae776fc7..ce6ebf37 100644
--- a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
+++ b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
@@ -139,6 +139,10 @@ public class Instructions {
return new PushUnitInstruction(Sources.NULL);
}
+ public static Instruction resume() {
+ return new ResumeInstruction(Sources.NULL);
+ }
+
public static Instruction return_() {
return new ReturnInstruction(Sources.NULL);
}