diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-02 13:42:20 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-02 13:42:20 +0100 |
| commit | f153d3f5276711e36228542d1ce4644417d88885 (patch) | |
| tree | 80c3b58d69b62b6aa408872bceb7b4ff5c2c64be | |
| parent | b377ed25b102b5f0fa3ee870e694442d7a280134 (diff) | |
Allow adding single elements using builder
| -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; |
