diff options
Diffstat (limited to 'src/main/java')
4 files changed, 25 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedNamespaceStatementNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedNamespaceStatementNode.java index 16eafcf9..ac229649 100644 --- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedNamespaceStatementNode.java +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedNamespaceStatementNode.java @@ -1,4 +1,4 @@ package org.shedlang.compiler.ast.untyped; -public sealed interface UntypedNamespaceStatementNode extends UntypedNode permits UntypedAssignNode, UntypedFunctionDefinitionNode, UntypedStructDefinitionNode { +public sealed interface UntypedNamespaceStatementNode extends UntypedNode permits UntypedAssignNode, UntypedFunctionDefinitionNode, UntypedStructDefinitionNode, UntypedSumTypeDefinitionNode { } diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedSumTypeDefinitionNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedSumTypeDefinitionNode.java new file mode 100644 index 00000000..3a49f46e --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedSumTypeDefinitionNode.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.ast.untyped; + +import org.shedlang.compiler.sources.Source; + +public record UntypedSumTypeDefinitionNode( + String name, + UntypedTypeLevelExpressionNode variants, + Source source +) implements UntypedNamespaceStatementNode { +} diff --git a/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java b/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java index a6cfde24..27be00db 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java +++ b/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java @@ -78,6 +78,13 @@ class DeclaredVariables { VariableType.CONSTANT, struct.source() )); + + case UntypedSumTypeDefinitionNode sumType -> + variables.plus(new DeclaredVariable( + sumType.name(), + VariableType.CONSTANT, + sumType.source() + )); }; } diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index 84e87182..7c3741e2 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -745,6 +745,10 @@ public class TypeChecker { Set.of() ); } + + case UntypedSumTypeDefinitionNode untypedSumTypeDefinition -> { + throw new UnsupportedOperationException("TODO"); + } } } @@ -790,6 +794,9 @@ public class TypeChecker { case UntypedStructDefinitionNode structDefinition -> typeCheckStepsStructDefinition(structDefinition); + + case UntypedSumTypeDefinitionNode sumTypeDefinition -> + throw new UnsupportedOperationException("TODO"); }; } |
