diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-12 20:44:53 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-12 20:59:36 +0100 |
| commit | 5ee132e804d7faec0929a332866d5ed146dbdf59 (patch) | |
| tree | 02da0493ad3fa1b80c7cbc94d5d8718415ee24a6 /src/main/java/org | |
| parent | da2320d8104c9f3f0bbe4c0c4343ebddc732a689 (diff) | |
Define Java AST using hobgoblin
Diffstat (limited to 'src/main/java/org')
31 files changed, 789 insertions, 114 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java index f592aa7..e1a9e38 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java @@ -250,7 +250,7 @@ public class JavaPreciselyMatchersGenerator implements Generator { ) ), methods, - JavaCustomArea.type(javaMatcherTypeRef, "body"), + JavaCustomArea.forType(javaMatcherTypeRef, "body"), DocComment.EMPTY ); } 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 de33968..8f9ea13 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 @@ -101,11 +101,11 @@ public class JavaTypesGenerator implements Generator { Optional.empty() ) ), - JavaCustomArea.type(generateBuilderTypeRef(sumDefinition.type()), "body"), + JavaCustomArea.forType(generateBuilderTypeRef(sumDefinition.type()), "body"), DocComment.EMPTY ) ), - JavaCustomArea.type(generateTypeRef(sumDefinition.type(), context), "body"), + JavaCustomArea.forType(generateTypeRef(sumDefinition.type(), context), "body"), sumDefinition.docComment() ) ); @@ -159,7 +159,7 @@ public class JavaTypesGenerator implements Generator { ), generateStructDefinitionBuilder(structDefinition, components, context) ), - JavaCustomArea.type(generateTypeRef(structDefinition.type(), context), "body"), + JavaCustomArea.forType(generateTypeRef(structDefinition.type(), context), "body"), structDefinition.docComment() ); } @@ -241,7 +241,7 @@ public class JavaTypesGenerator implements Generator { components, implementsTypes, body, - JavaCustomArea.type(builderJavaTypeRef, "body"), + JavaCustomArea.forType(builderJavaTypeRef, "body"), DocComment.EMPTY ); } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java index b53e192..f17c9f3 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java @@ -1,7 +1,37 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaAssignment( - JavaExpression left, - JavaExpression right -) implements JavaExpression { +public record JavaAssignment(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression left, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression right) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression left, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression right) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment(left, right); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder withLeft(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression left) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder(left, right); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder withLeft(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder left) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder(left.build(), right); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder withRight(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression right) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder(left, right); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder withRight(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder right) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder(left, right.build()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlock.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlock.java index f758831..69747be 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlock.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlock.java @@ -1,11 +1,30 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; +public record JavaBlock(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement> statements) { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder(java.util.List.of()); + } + + public record Builder(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement> statements) { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock(statements); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder withStatements(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement> statements) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder(statements); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder body + } -public record JavaBlock(List<JavaBlockStatement> statements) { - public static final JavaBlock EMPTY = new JavaBlock(List.of()); + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body + public static final JavaBlock EMPTY = new JavaBlock(java.util.List.of()); public boolean isEmpty() { return this.statements.isEmpty(); } + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlockStatement.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlockStatement.java index fe3e69a..19218f4 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlockStatement.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBlockStatement.java @@ -1,4 +1,15 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaBlockStatement permits JavaExpressionStatement, JavaReturn { +public sealed interface JavaBlockStatement permits org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn { + public interface Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement build(); + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java index 5ce363d..117bc72 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java @@ -1,4 +1,15 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaClassBodyDeclaration permits JavaConstructorDeclaration, JavaFieldDeclaration, JavaMethodDeclaration, JavaTypeDeclaration { +public sealed interface JavaClassBodyDeclaration permits org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration { + public interface Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration build(); + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java index 7a099ef..a05e2ed 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java @@ -1,14 +1,45 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import org.zwobble.hobgoblin.compiler.ast.DocComment; +public record JavaClassDeclaration(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder("", java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryDocComment()); + } + + public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration(name, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withImplementsTypes(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withBody(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder customArea) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea.build(), docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment); + } -import java.util.List; + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder body + } -public record JavaClassDeclaration( - String name, - List<JavaTypeRef> implementsTypes, - List<JavaClassBodyDeclaration> body, - JavaCustomArea customArea, - DocComment docComment -) implements JavaTypeDeclaration { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java index ebcb316..252380c 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java @@ -1,9 +1,33 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; +public record JavaCompilationUnit(java.util.List<String> packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.arbitrary().build()); + } + + public record Builder(java.util.List<String> packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit(packageName, typeDeclaration); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withPackageName(java.util.List<String> packageName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, typeDeclaration); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withTypeDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, typeDeclaration); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withTypeDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder typeDeclaration) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, typeDeclaration.build()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder body + } -public record JavaCompilationUnit( - List<String> packageName, - JavaTypeDeclaration typeDeclaration -) { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java index a6799f8..b8898c7 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaConstructorDeclaration.java @@ -1,11 +1,41 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; +public record JavaConstructorDeclaration(String typeName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaVisibility(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.arbitrary().build()); + } + + public record Builder(String typeName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration(typeName, visibility, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withTypeName(String typeName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withVisibility(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withParams(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withBody(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock body) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder withBody(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock.Builder body) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder(typeName, visibility, params, body.build()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration.Builder body + } -public record JavaConstructorDeclaration( - String typeName, - JavaVisibility visibility, - List<JavaParam> params, - JavaBlock body -) implements JavaClassBodyDeclaration { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaConstructorDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java index 51e3096..f035a4f 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java @@ -1,7 +1,32 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaCustomArea(JavaTypeRef type, String name) { - public static JavaCustomArea type(JavaTypeRef type, String name) { +public record JavaCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea(type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder(type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder(type, name); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea body + public static JavaCustomArea forType(JavaTypeRef type, String name) { return new JavaCustomArea(type, name); } + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java index 289b3e0..dae488d 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java @@ -1,4 +1,15 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaExpression permits JavaAssignment, JavaFieldAccess, JavaIntegerLiteral, JavaMethodCall, JavaMethodRef, JavaNewExpression, JavaNullLiteral, JavaRef, JavaStaticFieldAccess, JavaStaticMethodCall, JavaStringLiteral { +public sealed interface JavaExpression permits org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaAssignment, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral { + public interface Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression build(); + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpressionStatement.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpressionStatement.java index 2ec771f..7ae1cd4 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpressionStatement.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpressionStatement.java @@ -1,4 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaExpressionStatement(JavaExpression expression) implements JavaBlockStatement { +public record JavaExpressionStatement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression expression) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression expression) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement(expression); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder withExpression(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression expression) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder(expression); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder withExpression(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder expression) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder(expression.build()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpressionStatement body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java index e213121..3ae942a 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldAccess.java @@ -1,7 +1,33 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaFieldAccess( - JavaExpression receiver, - String fieldName -) implements JavaExpression { +public record JavaFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess(receiver, fieldName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder withReceiver(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(receiver, fieldName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder withReceiver(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder receiver) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(receiver.build(), fieldName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder withFieldName(String fieldName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder(receiver, fieldName); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldAccess body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java index 14855de..81f26ea 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java @@ -1,8 +1,33 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaFieldDeclaration( - JavaVisibility visibility, - JavaTypeRef type, - String name -) implements JavaClassBodyDeclaration { +public record JavaFieldDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaVisibility(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration(visibility, type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder withVisibility(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(visibility, type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(visibility, type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder(visibility, type, name); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIntegerLiteral.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIntegerLiteral.java index 0f0342d..575d8eb 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIntegerLiteral.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaIntegerLiteral.java @@ -1,4 +1,25 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaIntegerLiteral(long value) implements JavaExpression { +public record JavaIntegerLiteral(long value) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.Builder(0); + } + + public record Builder(long value) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral(value); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.Builder withValue(long value) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.Builder(value); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java index e3780c7..8e9fc6b 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java @@ -1,15 +1,49 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import org.zwobble.hobgoblin.compiler.ast.DocComment; +public record JavaInterfaceDeclaration(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaInterfaceOpenness(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryDocComment()); + } + + public record Builder(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration(name, openness, permitsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withOpenness(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness openness) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withPermitsTypes(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> permitsTypes) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withBody(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder customArea) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea.build(), docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment); + } -import java.util.List; + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder body + } -public record JavaInterfaceDeclaration( - String name, - JavaInterfaceOpenness openness, - List<JavaTypeRef> permitsTypes, - List<JavaClassBodyDeclaration> body, - JavaCustomArea customArea, - DocComment docComment -) implements JavaTypeDeclaration { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java index 6ec7caf..24841c3 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodCall.java @@ -1,10 +1,37 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; +public record JavaMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build(), "", java.util.List.of()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall(receiver, methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withReceiver(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression receiver) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver, methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withReceiver(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder receiver) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver.build(), methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withMethodName(String methodName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver, methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder withArgs(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder(receiver, methodName, args); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall.Builder body + } -public record JavaMethodCall( - JavaExpression receiver, - String methodName, - List<JavaExpression> args -) implements JavaExpression { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodCall body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java index dc5954c..b6b5043 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java @@ -1,22 +1,52 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; -import java.util.Optional; - -public record JavaMethodDeclaration( - String name, - JavaVisibility visibility, - JavaMethodKind kind, - JavaTypeRef returnType, - List<JavaParam> params, - Optional<JavaBlock> body -) implements JavaClassBodyDeclaration { +public record JavaMethodDeclaration(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind kind, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef returnType, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock> body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder("", org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaVisibility(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaMethodKind(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), java.util.List.of(), java.util.Optional.empty()); + } + + public record Builder(String name, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind kind, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef returnType, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params, java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock> body) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration(name, visibility, kind, returnType, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withVisibility(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaVisibility visibility) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withKind(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodKind kind) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withReturnType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef returnType) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withParams(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam> params) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder withBody(java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlock> body) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder(name, visibility, kind, returnType, params, body); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration body public JavaMethodDeclaration( String name, JavaVisibility visibility, JavaMethodKind kind, JavaTypeRef returnType, - List<JavaParam> params, + java.util.List<JavaParam> params, JavaBlock body ) { this( @@ -25,7 +55,8 @@ public record JavaMethodDeclaration( kind, returnType, params, - Optional.of(body) + java.util.Optional.of(body) ); } + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java index b100804..b03fe15 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodRef.java @@ -1,4 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaMethodRef(JavaTypeRef type, String methodName) implements JavaExpression { +public record JavaMethodRef(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef(type, methodName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(type, methodName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder withMethodName(String methodName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder(type, methodName); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaMethodRef body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java index b6852bf..b69f544 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNewExpression.java @@ -1,9 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; +public record JavaNewExpression(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), java.util.List.of()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression(type, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder(type, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder withArgs(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder(type, args); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression.Builder body + } -public record JavaNewExpression( - JavaTypeRef type, - List<JavaExpression> args -) implements JavaExpression { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNewExpression body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNullLiteral.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNullLiteral.java index 3ce68eb..e0f11fd 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNullLiteral.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaNullLiteral.java @@ -1,4 +1,21 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaNullLiteral() implements JavaExpression { +public record JavaNullLiteral() implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral.Builder(); + } + + public record Builder() implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral(); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaNullLiteral body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java index 49a7f5f..75c3534 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaParam.java @@ -1,7 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaParam( - JavaTypeRef type, - String name -) { +public record JavaParam(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam(type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder(type, name); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaParam body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java index ba95357..e3bd593 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordComponent.java @@ -1,4 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaRecordComponent(JavaTypeRef type, String name) { +public record JavaRecordComponent(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String name) { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent(type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(type, name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder(type, name); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java index 709d889..45a3bcf 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java @@ -1,15 +1,49 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import org.zwobble.hobgoblin.compiler.ast.DocComment; +public record JavaRecordDeclaration(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder("", java.util.List.of(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryDocComment()); + } + + public record Builder(String name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration(name, components, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withComponents(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent> components) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withImplementsTypes(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef> implementsTypes) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withBody(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration> body) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder customArea) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea.build(), docComment); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment); + } -import java.util.List; + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder body + } -public record JavaRecordDeclaration( - String name, - List<JavaRecordComponent> components, - List<JavaTypeRef> implementsTypes, - List<JavaClassBodyDeclaration> body, - JavaCustomArea customArea, - DocComment docComment -) implements JavaTypeDeclaration { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java index 0ccc05c..36c1005 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java @@ -1,4 +1,25 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaRef(String name) implements JavaExpression { +public record JavaRef(String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder(""); + } + + public record Builder(String name) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef(name); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder withName(String name) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder(name); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRef body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaReturn.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaReturn.java index f297f33..7c5691c 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaReturn.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaReturn.java @@ -1,4 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaReturn(JavaExpression value) implements JavaBlockStatement { +public record JavaReturn(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression value) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIntegerLiteral.arbitrary().build()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression value) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBlockStatement.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn(value); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder withValue(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression value) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder(value); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder withValue(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder value) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder(value.build()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaReturn body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java index 1a405d1..568a892 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticFieldAccess.java @@ -1,7 +1,29 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaStaticFieldAccess( - JavaTypeRef type, - String fieldName -) implements JavaExpression { +public record JavaStaticFieldAccess(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), ""); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess(type, fieldName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(type, fieldName); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder withFieldName(String fieldName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder(type, fieldName); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticFieldAccess body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java index ec12861..2a3283b 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStaticMethodCall.java @@ -1,10 +1,33 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -import java.util.List; +public record JavaStaticMethodCall(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.Native.arbitraryJavaTypeRef(), "", java.util.List.of()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, String methodName, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall(type, methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withMethodName(String methodName) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName, args); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder withArgs(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression> args) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder(type, methodName, args); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall.Builder body + } -public record JavaStaticMethodCall( - JavaTypeRef type, - String methodName, - List<JavaExpression> args -) implements JavaExpression { + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStaticMethodCall body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStringLiteral.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStringLiteral.java index 28fc5d7..b97df72 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStringLiteral.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaStringLiteral.java @@ -1,4 +1,25 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public record JavaStringLiteral(String value) implements JavaExpression { +public record JavaStringLiteral(String value) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral.Builder(""); + } + + public record Builder(String value) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral build() { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral(value); + } + + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral.Builder withValue(String value) { + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral.Builder(value); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaStringLiteral body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java index 0ad9dd2..1824efc 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java @@ -1,6 +1,17 @@ +// Generated by hobgoblin. + package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaTypeDeclaration extends JavaClassBodyDeclaration permits JavaClassDeclaration, JavaInterfaceDeclaration, JavaRecordDeclaration { +public sealed interface JavaTypeDeclaration permits org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration { + public interface Builder { + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration build(); + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration body String name(); JavaCustomArea customArea(); + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java new file mode 100644 index 0000000..fd23901 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/Native.java @@ -0,0 +1,28 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +import org.zwobble.hobgoblin.compiler.ast.DocComment; + +public class Native { + private Native() { + } + + public static DocComment arbitraryDocComment() { + return DocComment.EMPTY; + } + + public static JavaInterfaceOpenness arbitraryJavaInterfaceOpenness() { + return JavaInterfaceOpenness.OPEN; + } + + public static JavaMethodKind arbitraryJavaMethodKind() { + return JavaMethodKind.INSTANCE; + } + + public static JavaTypeRef arbitraryJavaTypeRef() { + return JavaTypeRef.INT; + } + + public static JavaVisibility arbitraryJavaVisibility() { + return JavaVisibility.PRIVATE; + } +} |
