summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-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;