summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java20
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java18
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)
+ );
+ }
}