diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-10 12:04:59 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-10 12:04:59 +0100 |
| commit | ff4dad7fc61d13aee7ed1191cc3afd9a8a75a240 (patch) | |
| tree | 9897db2ffb994081a32e72213beb6d8962a13dcd /src/test/java/org/shedlang/compiler/stackir | |
| parent | d2769fe60d264607f2e1c338657dc7e4d4bfba52 (diff) | |
Compile expression statements to stack instructions
Diffstat (limited to 'src/test/java/org/shedlang/compiler/stackir')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java | 24 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java | 6 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java new file mode 100644 index 00000000..a408f19d --- /dev/null +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java @@ -0,0 +1,24 @@ +package org.shedlang.compiler.stackir; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.ast.typed.Typed; + +import java.util.List; + +import static org.shedlang.compiler.stackir.instructions.InstructionMatchers.*; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.isSequence; + +public class StackCompilerExpressionStatementTests { + @Test + public void expressionIsEvaluatedAndTheResultDiscarded() { + var node = Typed.expressionStatement(Typed.stringLiteral("hello")); + + var instructions = StackCompiler.compileFunctionStatement(node); + + assertThat(instructions, isSequence( + isPushStringInstruction("hello"), + isDiscardInstruction() + )); + } +} 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 c9cd8621..3863c2f9 100644 --- a/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java +++ b/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java @@ -19,6 +19,12 @@ public class InstructionMatchers { ); } + public static Matcher<Instruction> isDiscardInstruction() { + return instanceOf( + DiscardInstruction.class + ); + } + public static Matcher<Instruction> isLocalLoadInstruction(String name) { return instanceOf( LocalLoadInstruction.class, |
