aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/stackir
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-30 19:12:25 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-30 19:12:25 +0100
commit52ea9be878308da4113abcd14b70ba4b39503ef6 (patch)
tree080ec7fa00167728aa4d37d944a0f175a600373d /src/main/java/org/shedlang/compiler/stackir
parentd198788e4d4da184bf6a931ce2cceb19288659d5 (diff)
Add namespace-import instruction
Diffstat (limited to 'src/main/java/org/shedlang/compiler/stackir')
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java6
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java2
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/instructions/NamespaceImportInstruction.java10
3 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
index 12592b42..35789b18 100644
--- a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
+++ b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
@@ -93,6 +93,12 @@ public class InstructionSerializer {
treeString(namespaceFieldStore.namespaceName().toString()),
treeString(namespaceFieldStore.fieldName())
);
+
+ case NamespaceImportInstruction namespaceImport ->
+ treeList(
+ treeIdentifier("namespace-import"),
+ treeString(namespaceImport.namespaceName().toString())
+ );
case PushBoolInstruction pushBoolInstruction ->
treeList(
diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java
index 50607e02..1fb0bede 100644
--- a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java
+++ b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java
@@ -3,7 +3,7 @@ package org.shedlang.compiler.stackir.instructions;
import org.shedlang.compiler.sources.Source;
public sealed interface Instruction
- permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, LocalLoadInstruction, LocalStoreInstruction, NamespaceFieldStoreInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction, PushUnitInstruction, ReturnInstruction {
+ permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, LocalLoadInstruction, LocalStoreInstruction, NamespaceFieldStoreInstruction, NamespaceImportInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction, PushUnitInstruction, ReturnInstruction {
Source source();
}
diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/NamespaceImportInstruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/NamespaceImportInstruction.java
new file mode 100644
index 00000000..3e7abd7f
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/stackir/instructions/NamespaceImportInstruction.java
@@ -0,0 +1,10 @@
+package org.shedlang.compiler.stackir.instructions;
+
+import org.shedlang.compiler.sources.Source;
+import org.shedlang.compiler.types.NamespaceName;
+
+public record NamespaceImportInstruction(
+ NamespaceName namespaceName,
+ Source source
+) implements Instruction {
+}