diff options
4 files changed, 17 insertions, 5 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 a213113..4ce02b6 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 @@ -51,10 +51,10 @@ public class JavaWriter implements AutoCloseable { this.writer.indent(); writeWithSeparator( - classDeclaration.methods(), - method -> { + classDeclaration.body(), + bodyDeclaration -> { writer.newLine(); - writeMethodDeclaration(method); + writeClassBodyDeclaration(bodyDeclaration); }, () -> writer.newLine() ); @@ -64,6 +64,14 @@ public class JavaWriter implements AutoCloseable { this.writer.write("}"); } + private void writeClassBodyDeclaration(JavaClassBodyDeclaration bodyDeclaration) throws IOException { + switch (bodyDeclaration) { + case JavaMethodDeclaration methodDeclaration -> { + writeMethodDeclaration(methodDeclaration); + } + } + } + private void writeMethodDeclaration(JavaMethodDeclaration method) throws IOException { this.writer.write("public "); writeTypeRef(method.returnType()); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java new file mode 100644 index 0000000..eb7a0e4 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java @@ -0,0 +1,4 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +public sealed interface JavaClassBodyDeclaration permits JavaMethodDeclaration { +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java index b44d9b0..e7556a6 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java @@ -4,6 +4,6 @@ import java.util.List; public record JavaClassDeclaration( String name, - List<JavaMethodDeclaration> methods + List<JavaClassBodyDeclaration> body ) implements JavaTypeDeclaration { } 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 5fe313e..84179f6 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 @@ -3,5 +3,5 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public record JavaMethodDeclaration( String name, JavaTypeRef returnType -) { +) implements JavaClassBodyDeclaration { } |
