summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-03 11:27:08 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-03 11:27:08 +0100
commitdda4d7559276300877655c1e8c783ae8ef0cc793 (patch)
tree1c4ffb01102877afd0df777a281fcda999254f2d /src/main/java/org
parent19d9169d58ce2f2581073fd0af6e6439604f591c (diff)
Support writing empty Java class declarations
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java13
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java4
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java2
3 files changed, 18 insertions, 1 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 59de6b7..0b56fa6 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
@@ -29,6 +29,10 @@ public class JavaWriter implements AutoCloseable {
void writeTypeDeclaration(JavaTypeDeclaration typeDeclaration) throws IOException {
switch (typeDeclaration) {
+ case JavaClassDeclaration classDeclaration -> {
+ writeClassDeclaration(classDeclaration);
+ }
+
case JavaInterfaceDeclaration interfaceDeclaration -> {
writeInterfaceDeclaration(interfaceDeclaration);
}
@@ -39,6 +43,15 @@ public class JavaWriter implements AutoCloseable {
}
}
+ private void writeClassDeclaration(JavaClassDeclaration classDeclaration) throws IOException {
+ this.writer.write("public class ");
+ this.writer.write(classDeclaration.name());
+ this.writer.write(" {");
+ this.writer.newLine();
+ this.writer.write("}");
+ this.writer.newLine();
+ }
+
private void writeInterfaceDeclaration(JavaInterfaceDeclaration interfaceDeclaration) throws IOException {
this.writer.write("public sealed interface ");
this.writer.write(interfaceDeclaration.name());
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
new file mode 100644
index 0000000..6ca6a26
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java
@@ -0,0 +1,4 @@
+package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
+
+public record JavaClassDeclaration(String name) implements JavaTypeDeclaration {
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java
index 5cf5161..da6481e 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java
@@ -1,5 +1,5 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public sealed interface JavaTypeDeclaration permits JavaInterfaceDeclaration, JavaRecordDeclaration {
+public sealed interface JavaTypeDeclaration permits JavaClassDeclaration, JavaInterfaceDeclaration, JavaRecordDeclaration {
String name();
}