diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-11-18 14:45:25 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-11-18 14:45:25 +0000 |
| commit | 240cf4b6b2c4135d9b6b9150426798f6cc8508df (patch) | |
| tree | 1fa972fb41354d12a2670f3d1dd4cdbdf7c0fa63 /src/test/java | |
| parent | f3caf574b02e54d459374b9750e5791df5549b9f (diff) | |
Add effect as receiver in stack IR
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java | 12 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java | 8 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java index 1ba7fb6a..2f8c4c44 100644 --- a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java @@ -129,6 +129,18 @@ public class InstructionSerializerTests { } @Test + public void canSerializeUserDefinedEffectFieldLoad() { + var instruction = Instructions.fieldLoad( + Effects.userDefined(NamespaceName.of("Example", "Project"), "State"), + "read" + ); + + var string = serialize(instruction); + + assertThat(string, equalTo("(field-load (effect \"Example/Project.State\") \"read\")")); + } + + @Test public void canSerializeIf() { var instruction = Instructions.if_( 1, 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 fe820b55..ae776fc7 100644 --- a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java +++ b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java @@ -59,6 +59,14 @@ public class Instructions { ); } + public static Instruction fieldLoad(UserDefinedEffect effect, String fieldName) { + return new FieldLoadInstruction( + new FieldLoadInstruction.Receiver.Effect(effect), + fieldName, + Sources.NULL + ); + } + public static Instruction if_( int resultCount, List<Instruction> trueBody, |
