summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-06 23:23:07 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-06 23:23:07 +0100
commit2e958ec140e0ac146c8462eba6483320dbff8dd8 (patch)
tree5b02f02b1fb6391495da191bbc8aabe94328efe8 /src
parent8dd980fbbfb4793277709bef9940aed19d9519c4 (diff)
Introduce JavaClassBodyDeclaration
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java14
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassBodyDeclaration.java4
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaMethodDeclaration.java2
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 {
}