aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-18 14:45:25 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-18 14:45:25 +0000
commit240cf4b6b2c4135d9b6b9150426798f6cc8508df (patch)
tree1fa972fb41354d12a2670f3d1dd4cdbdf7c0fa63 /src/test/java
parentf3caf574b02e54d459374b9750e5791df5549b9f (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.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,