aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
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();
};
}