diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-29 16:41:12 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-29 16:41:12 +0100 |
| commit | dfd8c325c271428baa581b2d5c60a1a025143ab2 (patch) | |
| tree | 4326f430178bc26d1bcb09a81d3b6f81d1df9d60 | |
| parent | 5f280cb33680b51eda3c84b8e685d0ccf95f2fcb (diff) | |
Use generated code for untyped nodes
12 files changed, 239 insertions, 66 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/Native.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/Native.java new file mode 100644 index 0000000..50a52d2 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/Native.java @@ -0,0 +1,20 @@ +package org.zwobble.hobgoblin.compiler.ast.untyped; + +import org.zwobble.hobgoblin.compiler.ast.DocComment; +import org.zwobble.hobgoblin.compiler.sources.NullSource; +import org.zwobble.hobgoblin.compiler.sources.Source; +import org.zwobble.hobgoblin.compiler.types.NamespaceName; + +public class Native { + public static DocComment arbitraryDocComment() { + return DocComment.EMPTY; + } + + public static NamespaceName arbitraryNamespaceName() { + return NamespaceName.of(); + } + + public static Source arbitrarySource() { + return NullSource.INSTANCE; + } +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedConstructedTypeNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedConstructedTypeNode.java index 6615995..c9ca4e4 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedConstructedTypeNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedConstructedTypeNode.java @@ -1,12 +1,31 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.sources.Source; +public record UntypedConstructedTypeNode(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode receiver, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode> args, org.zwobble.hobgoblin.compiler.sources.Source source) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode { + public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.arbitrary().build(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } -import java.util.List; + public record Builder(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode receiver, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode> args, org.zwobble.hobgoblin.compiler.sources.Source source) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode(receiver, args, source); + } -public record UntypedConstructedTypeNode( - UntypedTypeLevelExpressionNode receiver, - List<UntypedTypeLevelExpressionNode> args, - Source source -) implements UntypedTypeLevelExpressionNode { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder withReceiver(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode receiver) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder(receiver, args, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder withArgs(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode> args) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder(receiver, args, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder(receiver, args, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java index d4d98d3..afa5b0e 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java @@ -1,13 +1,31 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.sources.Source; -import org.zwobble.hobgoblin.compiler.types.NamespaceName; +public record UntypedNamespaceNode(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body, org.zwobble.hobgoblin.compiler.sources.Source source) { + public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryNamespaceName(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } -import java.util.List; + public record Builder(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body, org.zwobble.hobgoblin.compiler.sources.Source source) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode(namespaceName, body, source); + } -public record UntypedNamespaceNode( - NamespaceName namespaceName, - List<UntypedNamespaceStatementNode> body, - Source source -) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withNamespaceName(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, body, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withBody(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, body, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, body, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceStatementNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceStatementNode.java index 5cbe444..ef1ca5e 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceStatementNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceStatementNode.java @@ -1,4 +1,6 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -public sealed interface UntypedNamespaceStatementNode extends UntypedNode permits UntypedNativeTypeDefinitionNode, UntypedStructDefinitionNode, UntypedSumDefinitionNode { +public sealed interface UntypedNamespaceStatementNode permits org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode, org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode, org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode { + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNativeTypeDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNativeTypeDefinitionNode.java index bdf76f8..fb0d550 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNativeTypeDefinitionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNativeTypeDefinitionNode.java @@ -1,11 +1,31 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.ast.DocComment; -import org.zwobble.hobgoblin.compiler.sources.Source; - -public record UntypedNativeTypeDefinitionNode( - String name, - DocComment docComment, - Source source -) implements UntypedNamespaceStatementNode { +public record UntypedNativeTypeDefinitionNode(String name, 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.UntypedNativeTypeDefinitionNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder("", org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryDocComment(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } + + public record Builder(String name, org.zwobble.hobgoblin.compiler.ast.DocComment docComment, org.zwobble.hobgoblin.compiler.sources.Source source) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode(name, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder(name, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder(name, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder(name, docComment, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNativeTypeDefinitionNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNode.java deleted file mode 100644 index c816495..0000000 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNode.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.zwobble.hobgoblin.compiler.ast.untyped; - -import org.zwobble.hobgoblin.compiler.sources.Source; - -public interface UntypedNode { - Source source(); -} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructDefinitionNode.java index 179aca2..80c6c3a 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructDefinitionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructDefinitionNode.java @@ -1,14 +1,35 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.ast.DocComment; -import org.zwobble.hobgoblin.compiler.sources.Source; +public record UntypedStructDefinitionNode(String name, 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.UntypedStructDefinitionNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder("", java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryDocComment(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } -import java.util.List; + public record Builder(String name, 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) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode(name, fields, docComment, source); + } -public record UntypedStructDefinitionNode( - String name, - List<UntypedStructFieldDefinitionNode> fields, - DocComment docComment, - Source source -) implements UntypedNamespaceStatementNode { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder(name, fields, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder withFields(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode> fields) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder(name, fields, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder(name, fields, docComment, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder(name, fields, docComment, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructFieldDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructFieldDefinitionNode.java index 0e21663..ba34624 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructFieldDefinitionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedStructFieldDefinitionNode.java @@ -1,10 +1,31 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.sources.Source; +public record UntypedStructFieldDefinitionNode(String name, org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode type, org.zwobble.hobgoblin.compiler.sources.Source source) { + public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder("", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } -public record UntypedStructFieldDefinitionNode( - String name, - UntypedTypeLevelExpressionNode type, - Source source -) implements UntypedNode { + public record Builder(String name, org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode type, org.zwobble.hobgoblin.compiler.sources.Source source) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode(name, type, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder(name, type, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder withType(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode type) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder(name, type, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder(name, type, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode body } 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 842dc0c..3a95cfb 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 @@ -1,14 +1,35 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.ast.DocComment; -import org.zwobble.hobgoblin.compiler.sources.Source; +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 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()); + } -import java.util.List; + 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) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode(name, variants, docComment, source); + } -public record UntypedSumDefinitionNode( - String name, - List<UntypedSumVariantDefinitionNode> variants, - DocComment docComment, - Source source -) implements UntypedNamespaceStatementNode { + 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); + } + + 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); + } + + 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); + } + + 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); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumDefinitionNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumVariantDefinitionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumVariantDefinitionNode.java index 91a9f0d..daba7ce 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumVariantDefinitionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedSumVariantDefinitionNode.java @@ -1,9 +1,27 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.sources.Source; +public record UntypedSumVariantDefinitionNode(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode type, org.zwobble.hobgoblin.compiler.sources.Source source) { + public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } -public record UntypedSumVariantDefinitionNode( - UntypedTypeLevelExpressionNode type, - Source source -) implements UntypedNode { + public record Builder(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode type, org.zwobble.hobgoblin.compiler.sources.Source source) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode(type, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder withType(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode type) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder(type, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder(type, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedSumVariantDefinitionNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java index 12414c5..956afb7 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java @@ -1,4 +1,6 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -public sealed interface UntypedTypeLevelExpressionNode extends UntypedNode permits UntypedConstructedTypeNode, UntypedTypeLevelReferenceNode { +public sealed interface UntypedTypeLevelExpressionNode permits org.zwobble.hobgoblin.compiler.ast.untyped.UntypedConstructedTypeNode, org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode { + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelReferenceNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelReferenceNode.java index 018655e..f2bc5e6 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelReferenceNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelReferenceNode.java @@ -1,9 +1,27 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -import org.zwobble.hobgoblin.compiler.sources.Source; +public record UntypedTypeLevelReferenceNode(String name, org.zwobble.hobgoblin.compiler.sources.Source source) implements org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode { + public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder("", org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource()); + } -public record UntypedTypeLevelReferenceNode( - String name, - Source source -) implements UntypedTypeLevelExpressionNode { + public record Builder(String name, org.zwobble.hobgoblin.compiler.sources.Source source) { + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode build() { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode(name, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder(name, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder(name, source); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode body + // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode body } |
