summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-07 19:16:51 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-07 19:16:51 +0100
commit2536899969733a81a0001eb2da0d1d478c092e4b (patch)
tree788d93a696bc4f6b6c2cc38b6178124bded5b551 /src/main/java/org
parent870371abf7ec001d612f08f275f52d4a4c952db9 (diff)
Don't store custom areas directly in AST
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java5
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java10
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java23
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java36
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCompilationUnit.java35
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java32
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java38
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java42
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java11
9 files changed, 79 insertions, 153 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 6c12f22..f6da3c1 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
@@ -73,8 +73,6 @@ public class JavaPreciselyMatchersGenerator implements Generator {
case TypedStructDefinitionNode structDefinition -> {
var javaCompilationUnit = new JavaCompilationUnit(
- packageParts,
- new JavaCustomArea(structMatcherRef(structDefinition.type()), "imports"),
generateStructDefinition(structDefinition, context)
);
@@ -242,10 +240,9 @@ public class JavaPreciselyMatchersGenerator implements Generator {
}
return new JavaClassDeclaration(
- matcherTypeName,
+ javaMatcherTypeRef,
List.of(genericMatcherRef(JavaTypeArg.invariant(JavaTypeRef.OBJECT))),
methods,
- JavaCustomArea.forType(javaMatcherTypeRef, "body"),
DocComment.EMPTY
);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java
index e61146a..572ab29 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java
@@ -79,10 +79,8 @@ public class JavaTransient0Generator implements Generator {
JavaGenerator.write(this.sourceRootDirectory, List.of(
new JavaCompilationUnit(
- packageName,
- new JavaCustomArea(transient0JavaTypeRef, "imports"),
new JavaClassDeclaration(
- transient0JavaName,
+ transient0JavaTypeRef,
List.of(),
List.of(
generateEncodeBoolMethod(),
@@ -94,7 +92,6 @@ public class JavaTransient0Generator implements Generator {
generateEncodeStringMethod(),
generateDecodeStringMethod()
),
- new JavaCustomArea(transient0JavaTypeRef, "body"),
DocComment.EMPTY
)
)
@@ -290,15 +287,12 @@ public class JavaTransient0Generator implements Generator {
return List.of(
new JavaCompilationUnit(
- packageName,
- new JavaCustomArea(transient0JavaTypeRef, "imports"),
new JavaClassDeclaration(
- transient0JavaName,
+ transient0JavaTypeRef,
List.of(),
namespace.body().stream()
.flatMap(statement -> generateNamespaceStatement(statement, context))
.toList(),
- new JavaCustomArea(transient0JavaTypeRef, "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 821389f..b445747 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
@@ -69,16 +69,12 @@ public class JavaTypesGenerator implements Generator {
}
private List<JavaCompilationUnit> generateNamespace(TypedNamespaceNode namespace, Context context) {
- var packageParts = namespaceToJavaPackageName(namespace.namespaceName());
-
var javaCompilationUnits = new ArrayList<JavaCompilationUnit>();
for (var statement : namespace.body()) {
switch (statement) {
case TypedEnumDefinitionNode enumDefinition -> {
var javaCompilationUnit = new JavaCompilationUnit(
- packageParts,
- new JavaCustomArea(generateTypeRef(enumDefinition.type(), context), "imports"),
generateEnumDefinition(enumDefinition, context)
);
@@ -90,8 +86,6 @@ public class JavaTypesGenerator implements Generator {
case TypedStructDefinitionNode structDefinition -> {
var javaCompilationUnit = new JavaCompilationUnit(
- packageParts,
- new JavaCustomArea(generateTypeRef(structDefinition.type(), context), "imports"),
generateStructDefinition(structDefinition, context)
);
@@ -100,8 +94,6 @@ public class JavaTypesGenerator implements Generator {
case TypedSumDefinitionNode sumDefinition -> {
var javaCompilationUnit = new JavaCompilationUnit(
- packageParts,
- new JavaCustomArea(generateTypeRef(sumDefinition.type(), context), "imports"),
generateSumDefinition(sumDefinition, context)
);
@@ -118,11 +110,10 @@ public class JavaTypesGenerator implements Generator {
Context context
) {
return new JavaEnumDeclaration(
- generateTypeName(enumDefinition.name()),
+ generateTypeRef(enumDefinition.type(), context),
enumDefinition.variants().stream()
.map(variant -> new JavaEnumConstant(generateEnumConstantName(variant.name())))
.toList(),
- JavaCustomArea.forType(generateTypeRef(enumDefinition.type(), context), "body"),
enumDefinition.docComment()
);
}
@@ -149,7 +140,7 @@ public class JavaTypesGenerator implements Generator {
.toList();
return new JavaRecordDeclaration(
- generateTypeName(structDefinition.name()),
+ generateTypeRef(structDefinition.type(), context),
components,
implementsTypes,
List.of(
@@ -169,7 +160,6 @@ public class JavaTypesGenerator implements Generator {
),
generateStructDefinitionBuilder(structDefinition, components, context)
),
- JavaCustomArea.forType(generateTypeRef(structDefinition.type(), context), "body"),
structDefinition.docComment()
);
}
@@ -206,11 +196,10 @@ public class JavaTypesGenerator implements Generator {
}
return new JavaRecordDeclaration(
- BUILDER_TYPE_NAME,
+ builderJavaTypeRef,
components,
implementsTypes,
body,
- JavaCustomArea.forType(builderJavaTypeRef, "body"),
DocComment.EMPTY
);
}
@@ -438,13 +427,12 @@ public class JavaTypesGenerator implements Generator {
}
return new JavaInterfaceDeclaration(
- generateTypeName(sumDefinition.name()),
+ generateTypeRef(sumDefinition.type(), context),
JavaInterfaceOpenness.SEALED,
sumDefinition.variants().stream()
.map(variant -> generateTypeRef(variant.type(), context))
.toList(),
body,
- JavaCustomArea.forType(generateTypeRef(sumDefinition.type(), context), "body"),
sumDefinition.docComment()
);
}
@@ -454,7 +442,7 @@ public class JavaTypesGenerator implements Generator {
Context context
) {
return new JavaInterfaceDeclaration(
- BUILDER_TYPE_NAME,
+ generateBuilderTypeRef(sumDefinition.type()),
JavaInterfaceOpenness.OPEN,
List.of(),
List.of(
@@ -468,7 +456,6 @@ public class JavaTypesGenerator implements Generator {
Optional.empty()
)
),
- JavaCustomArea.forType(generateBuilderTypeRef(sumDefinition.type()), "body"),
DocComment.EMPTY
);
}
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 e12a0cc..8f26f7a 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
@@ -5,60 +5,48 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration imports
-public record JavaClassDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 record JavaClassDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, 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.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(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, 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.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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration(type, implementsTypes, body, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name.build(), implementsTypes, body, customArea, docComment);
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder addImplementsType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef implementsType) {
var implementsTypes = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef>(this.implementsTypes);
implementsTypes.add(implementsType);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder addBodyElement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration bodyElement) {
var body = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration>(this.body);
body.add(bodyElement);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(name, implementsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder addBodyElement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder bodyElement) {
var body = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration>(this.body);
body.add(bodyElement.build());
- 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder(type, implementsTypes, body, docComment);
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.Builder 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 d196003..927c54e 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
@@ -5,38 +5,22 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit imports
-public record JavaCompilationUnit(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customAreaImports, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) {
+public record JavaCompilationUnit(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(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.arbitrary().build());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassDeclaration.arbitrary().build());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName packageName, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customAreaImports, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration typeDeclaration) {
+ public record Builder(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, customAreaImports, typeDeclaration);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withPackageName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName packageName) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, customAreaImports, typeDeclaration);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withPackageName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaPackageName.Builder packageName) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName.build(), customAreaImports, typeDeclaration);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withCustomAreaImports(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customAreaImports) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, customAreaImports, typeDeclaration);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder withCustomAreaImports(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder customAreaImports) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(packageName, customAreaImports.build(), typeDeclaration);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit(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, customAreaImports, typeDeclaration);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(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, customAreaImports, typeDeclaration.build());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder(typeDeclaration.build());
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit.Builder body
@@ -44,5 +28,12 @@ public record JavaCompilationUnit(org.zwobble.hobgoblin.compiler.output.lang.jav
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit body
+ public JavaPackageName packageName() {
+ return this.typeDeclaration.type().packageName();
+ }
+
+ public JavaCustomArea customAreaImports() {
+ return new JavaCustomArea(this.typeDeclaration.type(), "imports");
+ }
// 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/JavaEnumDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java
index 5668bbd..d95d0b9 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaEnumDeclaration.java
@@ -5,50 +5,38 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration imports
-public record JavaEnumDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, 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 {
+public record JavaEnumDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration {
public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, 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 {
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants, org.zwobble.hobgoblin.compiler.ast.DocComment docComment) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration build() {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration(name, constants, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration(type, constants, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name.build(), constants, customArea, docComment);
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(type, constants, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withConstants(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant> constants) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(type, constants, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder addConstant(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant constant) {
var constants = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant>(this.constants);
constants.add(constant);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(type, constants, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder addConstant(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant.Builder constant) {
var constants = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumConstant>(this.constants);
constants.add(constant.build());
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
- }
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withCustomArea(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.Builder customArea) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea.build(), docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(type, constants, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder withDocComment(org.zwobble.hobgoblin.compiler.ast.DocComment docComment) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(name, constants, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder(type, constants, docComment);
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaEnumDeclaration.Builder 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 a00a080..5b0089a 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
@@ -5,64 +5,52 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration imports
-public record JavaInterfaceDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 record JavaInterfaceDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, 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.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.JavaIdentifier.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness.OPEN, java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea.arbitrary().build(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceOpenness.OPEN, java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, 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.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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration(type, openness, permitsTypes, body, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name.build(), openness, permitsTypes, body, customArea, docComment);
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder addPermitsType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef permitsType) {
var permitsTypes = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef>(this.permitsTypes);
permitsTypes.add(permitsType);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder addBodyElement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration bodyElement) {
var body = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration>(this.body);
body.add(bodyElement);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(name, openness, permitsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder addBodyElement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder bodyElement) {
var body = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration>(this.body);
body.add(bodyElement.build());
- 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder(type, openness, permitsTypes, body, docComment);
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaInterfaceDeclaration.Builder 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 d4bbc65..e62298d 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
@@ -5,76 +5,64 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration imports
-public record JavaRecordDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 record JavaRecordDeclaration(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, 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.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(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.arbitrary().build(), 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.ast.HobgoblinNativeAst.arbitraryDocComment());
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.HobgoblinNativeAst.arbitraryJavaTypeRef(), java.util.List.of(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.HobgoblinNativeAst.arbitraryDocComment());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type, 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.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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration(type, components, implementsTypes, body, docComment);
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier 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 withName(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier.Builder name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name.build(), components, implementsTypes, body, customArea, docComment);
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder addComponent(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent component) {
var components = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent>(this.components);
components.add(component);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder addComponent(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent.Builder component) {
var components = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordComponent>(this.components);
components.add(component.build());
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder addImplementsType(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef implementsType) {
var implementsTypes = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef>(this.implementsTypes);
implementsTypes.add(implementsType);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder addBodyElement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration bodyElement) {
var body = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration>(this.body);
body.add(bodyElement);
- return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(name, components, implementsTypes, body, customArea, docComment);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, docComment);
}
public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder addBodyElement(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration.Builder bodyElement) {
var body = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaClassBodyDeclaration>(this.body);
body.add(bodyElement.build());
- 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, 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);
+ return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder(type, components, implementsTypes, body, docComment);
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaRecordDeclaration.Builder 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 e4e7b01..3ac5a48 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
@@ -13,10 +13,15 @@ public sealed interface JavaTypeDeclaration permits org.zwobble.hobgoblin.compil
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder body
}
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaIdentifier name();
-
- public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea();
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeRef type();
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration body
+ default JavaIdentifier name() {
+ return this.type().typeNames().getLast();
+ }
+
+ default JavaCustomArea customArea() {
+ return new JavaCustomArea(this.type(), "body");
+ }
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration body
}