diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-04-28 23:38:42 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-04-28 23:38:42 +0100 |
| commit | 0df2137ae4f03069398f6417d46d9a6d5bea1ce2 (patch) | |
| tree | fb1c17a5521e40a74f7a5106e94b5f0ecd0c2c1f /src/main/java | |
| parent | fa2bf4cc62b9bda55b01be51a593edc8dbfb26cc (diff) | |
Add TypedSumDefinitionNode
Diffstat (limited to 'src/main/java')
4 files changed, 32 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceStatementNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceStatementNode.java index 79dc0bb..6cab80c 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceStatementNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceStatementNode.java @@ -1,4 +1,4 @@ package org.zwobble.hobgoblin.compiler.ast.typed; -public sealed interface TypedNamespaceStatementNode extends TypedNode permits TypedStructDefinitionNode { +public sealed interface TypedNamespaceStatementNode extends TypedNode permits TypedStructDefinitionNode, TypedSumDefinitionNode { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedSumDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedSumDefinitionNode.java new file mode 100644 index 0000000..e04e2dd --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedSumDefinitionNode.java @@ -0,0 +1,16 @@ +package org.zwobble.hobgoblin.compiler.ast.typed; + +import org.zwobble.hobgoblin.compiler.sources.Source; +import org.zwobble.hobgoblin.compiler.types.SumType; + +import java.util.List; + +public record TypedSumDefinitionNode( + SumType type, + List<TypedSumVariantDefinitionNode> variants, + Source source +) implements TypedNamespaceStatementNode { + public String name() { + return this.type.name(); + } +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedSumVariantDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedSumVariantDefinitionNode.java new file mode 100644 index 0000000..5c2dd6c --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedSumVariantDefinitionNode.java @@ -0,0 +1,10 @@ +package org.zwobble.hobgoblin.compiler.ast.typed; + +import org.zwobble.hobgoblin.compiler.sources.Source; +import org.zwobble.hobgoblin.compiler.types.Type; + +public record TypedSumVariantDefinitionNode( + TypedTypeLevelExpressionNode<Type> type, + Source source +) implements TypedNode { +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java index 71fdba9..41070ef 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java @@ -2,6 +2,7 @@ package org.zwobble.hobgoblin.compiler.output.generators.javatypes; import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedStructDefinitionNode; +import org.zwobble.hobgoblin.compiler.ast.typed.TypedSumDefinitionNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTypeLevelExpressionNode; import org.zwobble.hobgoblin.compiler.builtins.BuiltinTypes; import org.zwobble.hobgoblin.compiler.output.CodeWriter; @@ -64,6 +65,10 @@ public class JavaTypesGenerator implements Generator { throw new RuntimeException(e); } } + + case TypedSumDefinitionNode sumDefinition -> { + throw new UnsupportedOperationException("TODO"); + } } } } |
