summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-02 13:42:20 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-02 13:42:20 +0100
commitf153d3f5276711e36228542d1ce4644417d88885 (patch)
tree80c3b58d69b62b6aa408872bceb7b4ff5c2c64be /src/main/java/org/zwobble
parentb377ed25b102b5f0fa3ee870e694442d7a280134 (diff)
Allow adding single elements using builder
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java32
1 files changed, 32 insertions, 0 deletions
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 0beed42..3098edb 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
@@ -307,6 +307,38 @@ public class JavaTypesGenerator implements Generator {
))
))
));
+
+ var elementBuilderTypeRef = generateBuilderTypeRef(elementType);
+
+ if (elementBuilderTypeRef.isPresent()) {
+ methods.add(new JavaMethodDeclaration(
+ addElementMethodName,
+ JavaVisibility.PUBLIC,
+ JavaMethodKind.INSTANCE,
+ builderJavaTypeRef,
+ List.of(
+ new JavaParam(elementBuilderTypeRef.get(), javaElementName)
+ ),
+ new JavaBlock(List.of(
+ new JavaLocalVariableDeclaration(
+ javaFieldName,
+ new JavaNewExpression(
+ JavaTypeRef.arrayList(javaElementType),
+ List.of(new JavaFieldAccess(JavaRef.THIS, javaFieldName))
+ )
+ ),
+ new JavaExpressionStatement(new JavaMethodCall(
+ new JavaRef(javaFieldName),
+ JavaIdentifier.of("add"),
+ List.of(new JavaMethodCall(new JavaRef(javaElementName), BUILD_METHOD_NAME, List.of()))
+ )),
+ new JavaReturn(new JavaNewExpression(
+ builderJavaTypeRef,
+ components.stream().<JavaExpression>map(argComponent -> new JavaRef(argComponent.name())).toList()
+ ))
+ ))
+ ));
+ }
}
return methods;