diff options
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, |
