aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-28 21:30:59 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-28 21:30:59 +0100
commit01c43d0b0a10744f5b01f8cc6c0fc52bdaabfbb2 (patch)
treec04adec6a6650b558c743f845cd2c2cce58aea37 /src/main/java
parent9afa33b729e89a33249ad5f92ed85708f32e880a (diff)
Add untyped var node
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedFunctionStatementNode.java2
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedVarNode.java14
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java3
3 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedFunctionStatementNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedFunctionStatementNode.java
index a232031b..807751c8 100644
--- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedFunctionStatementNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedFunctionStatementNode.java
@@ -2,6 +2,6 @@ package org.shedlang.compiler.ast.untyped;
import java.util.List;
-public sealed interface UntypedFunctionStatementNode extends UntypedNode permits UntypedBlockReturnNode, UntypedExpressionStatementNode, UntypedFunctionReturnNode, UntypedValNode {
+public sealed interface UntypedFunctionStatementNode extends UntypedNode permits UntypedBlockReturnNode, UntypedExpressionStatementNode, UntypedFunctionReturnNode, UntypedValNode, UntypedVarNode {
UntypedFunctionStatementBehaviour behaviour();
}
diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedVarNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedVarNode.java
new file mode 100644
index 00000000..3cd533b9
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedVarNode.java
@@ -0,0 +1,14 @@
+package org.shedlang.compiler.ast.untyped;
+
+import org.shedlang.compiler.sources.Source;
+
+public record UntypedVarNode(
+ UntypedTargetNode target,
+ UntypedExpressionNode expression,
+ Source source
+) implements UntypedFunctionStatementNode {
+ @Override
+ public UntypedFunctionStatementBehaviour behaviour() {
+ return UntypedFunctionStatementBehaviour.CONTINUE;
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index 6d96a98f..a238fd21 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -536,6 +536,9 @@ public class TypeChecker {
case UntypedValNode val ->
typeCheckVal(val).typeCheckAllPhases(context);
+
+ case UntypedVarNode var ->
+ throw new UnsupportedOperationException();
};
}