aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-17 17:20:23 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-17 17:20:23 +0100
commit3a139894dab4b6e4d7c3bf97ed97a90665d9d6df (patch)
tree95cdf02cdc42ef037c190454eddd82335fba0330 /src/main/java
parent743b94d61138eb913a85e1c4b753540e91f5f509 (diff)
Add typed tuple target
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedTargetNode.java3
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/StackCompiler.java4
2 files changed, 7 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedTargetNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedTargetNode.java
index 4a86975b..61ead210 100644
--- a/src/main/java/org/shedlang/compiler/ast/typed/TypedTargetNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedTargetNode.java
@@ -2,8 +2,11 @@ package org.shedlang.compiler.ast.typed;
import org.shedlang.compiler.sources.Source;
+import java.util.List;
+
public sealed interface TypedTargetNode extends TypedNode {
record Reassign(String name, Source source) implements TypedTargetNode {}
+ record Tuple(List<TypedTargetNode> elements, Source source) implements TypedTargetNode {}
record Val(String name, Source source) implements TypedTargetNode {}
record Var(String name, Source source) implements TypedTargetNode {}
}
diff --git a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
index 2c9d6065..31dffc42 100644
--- a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
+++ b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
@@ -380,6 +380,10 @@ public class StackCompiler {
yield context;
}
+ case TypedTargetNode.Tuple tuple -> {
+ throw new UnsupportedOperationException("TODO");
+ }
+
case TypedTargetNode.Val val -> {
context = context.addInstruction(
new LocalStoreInstruction(