aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java12
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java8
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,