diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-24 23:47:35 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-24 23:47:35 +0100 |
| commit | 65ab9014d79e2236208ab899710ee7ac1ba81aa1 (patch) | |
| tree | 664b62a9285cfd1bbf1cecf62106d1a50a1bfd1f /src/test/java | |
| parent | f061f3e94e0996c8853407ac2813385acf38025a (diff) | |
Use context in StackCompiler
Diffstat (limited to 'src/test/java')
16 files changed, 59 insertions, 41 deletions
diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerBlockReturnTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerBlockReturnTests.java index 7ff57a10..df738405 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerBlockReturnTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerBlockReturnTests.java @@ -11,10 +11,11 @@ public class StackCompilerBlockReturnTests { @Test public void expressionIsEvaluated() { var node = Typed.blockReturn(Typed.stringLiteral("hello")); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileFunctionStatement(node); + var result = StackCompiler.compileFunctionStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("hello") )); } diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java index 19f3a6a6..ac96c48e 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java @@ -11,10 +11,11 @@ public class StackCompilerBoolLiteralTests { @Test public void boolLiteralIsCompiledToPushBoolInstruction() { var node = Typed.boolLiteral(true); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushBoolInstruction(true) )); } diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerCallTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerCallTests.java index f4a2f229..be2dda99 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerCallTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerCallTests.java @@ -24,10 +24,11 @@ public class StackCompilerCallTests { Typed.namedArg("x1", Typed.stringLiteral("n1")) ) ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isLocalLoadInstruction("f"), isPushStringInstruction("p1"), isPushStringInstruction("p2"), diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java index a408f19d..f644408b 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerExpressionStatementTests.java @@ -3,9 +3,8 @@ 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.shedlang.compiler.stackir.instructions.InstructionMatchers.isDiscardInstruction; +import static org.shedlang.compiler.stackir.instructions.InstructionMatchers.isPushStringInstruction; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.isSequence; @@ -13,10 +12,11 @@ public class StackCompilerExpressionStatementTests { @Test public void expressionIsEvaluatedAndTheResultDiscarded() { var node = Typed.expressionStatement(Typed.stringLiteral("hello")); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileFunctionStatement(node); + var result = StackCompiler.compileFunctionStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("hello"), isDiscardInstruction() )); diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionDefinitionTests.java index 051b0fb6..44e1118e 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionDefinitionTests.java @@ -20,10 +20,11 @@ public class StackCompilerFunctionDefinitionTests { .addFreeVariable("z") .addStatement(Typed.expressionStatement(Typed.stringLiteral("hello"))) .build(); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileNamespaceStatement(node); + var result = StackCompiler.compileNamespaceStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( instanceOf( DefineFunctionInstruction.class, has("name", x -> x.name(), equalTo("f")), @@ -56,10 +57,11 @@ public class StackCompilerFunctionDefinitionTests { .addFreeVariable("z") .addStatement(Typed.blockReturn(Typed.stringLiteral("hello"))) .build(); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileNamespaceStatement(node); + var result = StackCompiler.compileNamespaceStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( instanceOf( DefineFunctionInstruction.class, has("body", x -> x.body(), isSequence( diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionReturnTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionReturnTests.java index 0baf9acb..6ef9b63a 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionReturnTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerFunctionReturnTests.java @@ -11,10 +11,11 @@ public class StackCompilerFunctionReturnTests { @Test public void expressionIsEvaluatedAndTheResultDiscarded() { var node = Typed.functionReturn(Typed.stringLiteral("hello")); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileFunctionStatement(node); + var result = StackCompiler.compileFunctionStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("hello"), isReturnInstruction() )); diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIfTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIfTests.java index a07e9aa6..ecc55608 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIfTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIfTests.java @@ -27,10 +27,11 @@ public class StackCompilerIfTests { )), Types.INT ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isLocalLoadInstruction("c"), isIfInstruction( isSequence( @@ -66,10 +67,11 @@ public class StackCompilerIfTests { )), Types.INT ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isLocalLoadInstruction("c"), isIfInstruction( isSequence( diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntAddTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntAddTests.java index 55283682..4724b867 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntAddTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntAddTests.java @@ -15,10 +15,11 @@ public class StackCompilerIntAddTests { Typed.intLiteral(42), Typed.intLiteral(47) ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushIntInstruction(42), isPushIntInstruction(47), isIntAddInstruction() diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntEqualsTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntEqualsTests.java index 805c23ac..61eb93f9 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntEqualsTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntEqualsTests.java @@ -14,10 +14,11 @@ public class StackCompilerIntEqualsTests { Typed.intLiteral(42), Typed.intLiteral(47) ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushIntInstruction(42), isPushIntInstruction(47), isIntEqualsInstruction() diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntLiteralTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntLiteralTests.java index 38448bb9..402c6dac 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntLiteralTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntLiteralTests.java @@ -11,10 +11,11 @@ public class StackCompilerIntLiteralTests { @Test public void intLiteralIsCompiledToPushIntInstruction() { var node = Typed.intLiteral(42); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushIntInstruction(42) )); } diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntNotEqualTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntNotEqualTests.java index 63543b11..8364bc81 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntNotEqualTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntNotEqualTests.java @@ -14,10 +14,11 @@ public class StackCompilerIntNotEqualTests { Typed.intLiteral(42), Typed.intLiteral(47) ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushIntInstruction(42), isPushIntInstruction(47), isIntNotEqualInstruction() diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntSubTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntSubTests.java index b11863c5..110be63a 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntSubTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerIntSubTests.java @@ -14,10 +14,11 @@ public class StackCompilerIntSubTests { Typed.intLiteral(42), Typed.intLiteral(47) ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushIntInstruction(42), isPushIntInstruction(47), isIntSubInstruction() diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerReferenceTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerReferenceTests.java index 2b5115c5..269326aa 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerReferenceTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerReferenceTests.java @@ -11,10 +11,11 @@ public class StackCompilerReferenceTests { @Test public void referenceIsCompiledToLocalLoad() { var node = Typed.reference("x"); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isLocalLoadInstruction("x") )); } diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringAddTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringAddTests.java index 29bf576d..42557970 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringAddTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringAddTests.java @@ -14,10 +14,11 @@ public class StackCompilerStringAddTests { Typed.stringLiteral("a"), Typed.stringLiteral("b") ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("a"), isPushStringInstruction("b"), isStringAddInstruction() diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringLiteralTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringLiteralTests.java index 2d2e7af1..44133713 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringLiteralTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerStringLiteralTests.java @@ -11,10 +11,11 @@ public class StackCompilerStringLiteralTests { @Test public void stringLiteralIsCompiledToPushStringInstruction() { var node = Typed.stringLiteral("hello"); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileExpression(node); + var result = StackCompiler.compileExpression(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("hello") )); } diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerValTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerValTests.java index a03e91b6..144b0461 100644 --- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerValTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerValTests.java @@ -14,10 +14,11 @@ public class StackCompilerValTests { Typed.targetVariable("x"), Typed.stringLiteral("hello") ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileFunctionStatement(node); + var result = StackCompiler.compileFunctionStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("hello"), isLocalStoreInstruction("x") )); @@ -29,10 +30,11 @@ public class StackCompilerValTests { Typed.targetVariable("x"), Typed.stringLiteral("hello") ); + var context = StackCompiler.Context.EMPTY; - var instructions = StackCompiler.compileNamespaceStatement(node); + var result = StackCompiler.compileNamespaceStatement(node, context); - assertThat(instructions, isSequence( + assertThat(result.instructions(), isSequence( isPushStringInstruction("hello"), isLocalStoreInstruction("x") )); |
