diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java | 32 |
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; |
