diff options
4 files changed, 18 insertions, 8 deletions
diff --git a/hobgoblin/src/ast/untyped.hob b/hobgoblin/src/ast/untyped.hob index 31ba4f2..a1b0fc2 100644 --- a/hobgoblin/src/ast/untyped.hob +++ b/hobgoblin/src/ast/untyped.hob @@ -41,6 +41,7 @@ struct UntypedStructFieldDefinitionNode { struct UntypedSumDefinitionNode { field name: String; field variants: List[UntypedSumVariantDefinitionNode]; + field fields: List[UntypedStructFieldDefinitionNode]; field docComment: DocComment; field source: Source; } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNode.java index c7a9f53..c7cfca9 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNode.java @@ -2,30 +2,34 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -public record UntypedSumDefinitionNode(String name, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode> variants, org.zwobble.hobgoblin.compiler.ast.DocComment docComment, org.zwobble.hobgoblin.compiler.sources.Source source) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode { +public record UntypedSumDefinitionNode(String name, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode> variants, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode> fields, org.zwobble.hobgoblin.compiler.ast.DocComment docComment, org.zwobble.hobgoblin.compiler.sources.Source source) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode { public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder arbitrary() { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder("", java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryDocComment(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder("", java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryDocComment(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); } - public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode> variants, org.zwobble.hobgoblin.compiler.ast.DocComment docComment, org.zwobble.hobgoblin.compiler.sources.Source source) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode.Builder { + public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode> variants, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode> fields, org.zwobble.hobgoblin.compiler.ast.DocComment docComment, org.zwobble.hobgoblin.compiler.sources.Source source) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode.Builder { public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode build() { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode(name, variants, docComment, source); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode(name, variants, fields, docComment, source); } public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder withName(String name) { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, docComment, source); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, fields, docComment, source); } public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder withVariants(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode> variants) { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, docComment, source); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, fields, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder withFields(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode> fields) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, fields, docComment, source); } public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, docComment, source); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, fields, docComment, source); } public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, docComment, source); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder(name, variants, fields, docComment, source); } // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder body diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java index 4beca21..31ead2a 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java @@ -179,6 +179,7 @@ public class Parser { return new UntypedSumDefinitionNode( name.charSequence().toString(), variants, + List.of(), docComment, source ); diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNodeMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNodeMatcher.java index fe704ac..ba98a0d 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNodeMatcher.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumDefinitionNodeMatcher.java @@ -33,6 +33,10 @@ public class UntypedSumDefinitionNodeMatcher implements org.zwobble.precisely.Ma return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("variants", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode::variants, variants))).toList()); } + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNodeMatcher withFields(org.zwobble.precisely.Matcher<? super java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode>> fields) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("fields", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode::fields, fields))).toList()); + } + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNodeMatcher withDocComment(org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.ast.DocComment> docComment) { return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("docComment", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode::docComment, docComment))).toList()); } |
