diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-29 17:08:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-29 17:08:55 +0100 |
| commit | ae55e6e9f177ac8505298abc0839d82d90dddb38 (patch) | |
| tree | 0489672942a321b0491d0afe9d55862298b9e4ed /src/main/java/org | |
| parent | e97fdb3a32e6c5eaae65d50001a2156ff8752f22 (diff) | |
Support Java method without body
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java | 20 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java | 18 |
2 files changed, 29 insertions, 9 deletions
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 677b1a6..7dbcdfc 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 @@ -229,17 +229,21 @@ public class JavaWriter implements AutoCloseable { () -> writer.write(", ") ); - this.writer.write(") {"); - this.writer.indent(); + this.writer.write(")"); - if (!method.body().isEmpty()) { + if (method.body().isEmpty()) { + this.writer.write(";"); + } else { + this.writer.write(" {"); + this.writer.indent(); + if (!method.body().get().isEmpty()) { + this.writer.newLine(); + writeBlock(method.body().get()); + } + this.writer.dedent(); this.writer.newLine(); - writeBlock(method.body()); + this.writer.write("}"); } - - this.writer.dedent(); - this.writer.newLine(); - this.writer.write("}"); } private void writeNewExpression(JavaNewExpression newExpression) throws IOException { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java index f38625f..454b41f 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java @@ -1,12 +1,28 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; import java.util.List; +import java.util.Optional; public record JavaMethodDeclaration( String name, JavaMethodKind kind, JavaTypeRef returnType, List<JavaParam> params, - JavaBlock body + Optional<JavaBlock> body ) implements JavaClassBodyDeclaration { + public JavaMethodDeclaration( + String name, + JavaMethodKind kind, + JavaTypeRef returnType, + List<JavaParam> params, + JavaBlock body + ) { + this( + name, + kind, + returnType, + params, + Optional.of(body) + ); + } } |
