diff options
Diffstat (limited to 'src/main/java')
3 files changed, 22 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 c9f62b3..2ae41bb 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 @@ -130,6 +130,10 @@ public class JavaWriter implements AutoCloseable { writeConstructorDeclaration(constructorDeclaration); } + case JavaFieldDeclaration fieldDeclaration -> { + writeFieldDeclaration(fieldDeclaration); + } + case JavaMethodDeclaration methodDeclaration -> { writeMethodDeclaration(methodDeclaration); } @@ -232,6 +236,15 @@ public class JavaWriter implements AutoCloseable { this.writer.write(fieldAccess.fieldName()); } + private void writeFieldDeclaration(JavaFieldDeclaration fieldDeclaration) throws IOException { + this.writeVisibility(fieldDeclaration.visibility()); + this.writer.write(" final "); + this.writeTypeRef(fieldDeclaration.type()); + this.writer.write(" "); + this.writer.write(fieldDeclaration.name()); + this.writer.write(";"); + } + private void writeImplements(List<JavaTypeRef> implementsTypes) throws IOException { if (!implementsTypes.isEmpty()) { this.writer.write("implements "); 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 index 3bee614..5ce363d 100644 --- 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 @@ -1,4 +1,4 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; -public sealed interface JavaClassBodyDeclaration permits JavaConstructorDeclaration, JavaMethodDeclaration, JavaTypeDeclaration { +public sealed interface JavaClassBodyDeclaration permits JavaConstructorDeclaration, JavaFieldDeclaration, JavaMethodDeclaration, JavaTypeDeclaration { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java new file mode 100644 index 0000000..14855de --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclaration.java @@ -0,0 +1,8 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +public record JavaFieldDeclaration( + JavaVisibility visibility, + JavaTypeRef type, + String name +) implements JavaClassBodyDeclaration { +} |
