diff options
Diffstat (limited to 'src/main/java/org')
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(); } |
