aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-07 19:47:34 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-07 19:47:34 +0000
commit7488757d0386b7770d321177e2c893ba1c060f26 (patch)
treecc6ecf2f0def11291bfe93faa99c73abf0adb1d4 /src/test/java
parent965936c9d2983fae0201412df1d7adf4a1bc1c66 (diff)
Add define-effect instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java14
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java5
2 files changed, 19 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 e2294588..4fd9c54a 100644
--- a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
@@ -6,6 +6,7 @@ import org.shedlang.compiler.sources.Sources;
import org.shedlang.compiler.stackir.instructions.DefineFunctionInstruction;
import org.shedlang.compiler.stackir.instructions.Instruction;
import org.shedlang.compiler.stackir.instructions.Instructions;
+import org.shedlang.compiler.types.Effects;
import org.shedlang.compiler.types.NamespaceName;
import org.shedlang.compiler.types.Types;
@@ -25,6 +26,19 @@ public class InstructionSerializerTests {
}
@Test
+ public void canSerializeDefineEffect() {
+ var instruction = Instructions.defineEffect(
+ Effects.userDefined(NamespaceName.of("Example", "Project"), "State")
+ );
+
+ var string = serialize(instruction);
+
+ assertThat(string, equalTo("""
+ (define-effect "Example/Project.State")"""
+ ));
+ }
+
+ @Test
public void canSerializeDefineFunction() {
// TODO: make a builder
var instruction = new DefineFunctionInstruction(
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 4971575c..643d9446 100644
--- a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
+++ b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
@@ -3,6 +3,7 @@ package org.shedlang.compiler.stackir.instructions;
import org.shedlang.compiler.sources.Sources;
import org.shedlang.compiler.types.NamespaceName;
import org.shedlang.compiler.types.StructType;
+import org.shedlang.compiler.types.UserDefinedEffect;
import java.math.BigInteger;
import java.util.List;
@@ -15,6 +16,10 @@ public class Instructions {
return new CallInstruction(positionalArgCount, namedArgNames, Sources.NULL);
}
+ public static Instruction defineEffect(UserDefinedEffect effect) {
+ return new DefineEffectInstruction(effect, Sources.NULL);
+ }
+
public static Instruction defineStruct(
StructType type,
List<DefineStructInstruction.Field> fields