From 689c9c1e8af8fd2fff2b390649a59e613e85eb6a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 2 Dec 2023 14:25:46 +0000 Subject: Add resume instruction --- .../shedlang/compiler/stackir/InstructionSerializerTests.java | 9 +++++++++ .../compiler/stackir/StackCompilerFunctionResumeTests.java | 5 ++--- .../compiler/stackir/instructions/InstructionMatchers.java | 6 ++++++ .../org/shedlang/compiler/stackir/instructions/Instructions.java | 4 ++++ 4 files changed, 21 insertions(+), 3 deletions(-) (limited to 'src/test/java/org/shedlang/compiler/stackir') 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 @@ -332,6 +332,15 @@ public class InstructionSerializerTests { assertThat(string, equalTo("(push-unit)")); } + @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 isResumeInstruction() { + return instanceOf( + ResumeInstruction.class + ); + } + public static Matcher 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); } -- cgit v1.2.3