From 01c43d0b0a10744f5b01f8cc6c0fc52bdaabfbb2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 28 Jul 2023 21:30:59 +0100 Subject: Add untyped var node --- .../compiler/ast/untyped/UntypedFunctionStatementNode.java | 2 +- .../org/shedlang/compiler/ast/untyped/UntypedVarNode.java | 14 ++++++++++++++ .../org/shedlang/compiler/typechecker/TypeChecker.java | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/ast/untyped/UntypedVarNode.java (limited to 'src/main/java') 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(); }; } -- cgit v1.2.3