diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-18 23:48:33 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-18 23:49:02 +0100 |
| commit | 4e8d3aa3f1ec9372e97098d0c247ef104edfb012 (patch) | |
| tree | dbaf62e7f334b3273727e2929e09ba73ea635dfb /src/main/java | |
| parent | 0d3b69afbda09e5140b05b8bb57100338da6c6c0 (diff) | |
Add build method to builders
Diffstat (limited to 'src/main/java')
4 files changed, 26 insertions, 2 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 2efd1ec..92c60d4 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 @@ -123,7 +123,19 @@ public class JavaTypesGenerator implements Generator { "Builder", components, List.of(), - List.of(), + List.of( + new JavaMethodDeclaration( + "build", + generateTypeRef(structDefinition.type()), + List.of(), + new JavaBlock(List.of( + new JavaReturn(new JavaNewExpression( + generateTypeRef(structDefinition.type()), + components.stream().<JavaExpression>map(component -> new JavaRef(component.name())).toList() + )) + )) + ) + ), DocComment.EMPTY ) ), diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java index 87b1aa6..9707ab5 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java @@ -112,6 +112,10 @@ public class JavaWriter implements AutoCloseable { case JavaNewExpression newExpression -> { writeNewExpression(newExpression); } + + case JavaRef ref -> { + writeRef(ref); + } } } @@ -229,6 +233,10 @@ public class JavaWriter implements AutoCloseable { this.writer.write("}"); } + private void writeRef(JavaRef ref) throws IOException { + this.writer.write(ref.name()); + } + private void writeReturnStatement(JavaReturn returnStatement) throws IOException { this.writer.write("return "); writeExpression(returnStatement.value()); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java index e90fe4e..03d54dd 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java @@ -1,4 +1,4 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaExpression permits JavaIntegerLiteral, JavaNewExpression { +public sealed interface JavaExpression permits JavaIntegerLiteral, JavaNewExpression, JavaRef { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java new file mode 100644 index 0000000..0ccc05c --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRef.java @@ -0,0 +1,4 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +public record JavaRef(String name) implements JavaExpression { +} |
