diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-12 17:10:45 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-12 17:10:45 +0100 |
| commit | 1fd6faf0b9874e0962ab790e12b1f12fabac893e (patch) | |
| tree | 9f91989bd18a69c6fae051d7b526fca20569117a /src/main | |
| parent | 028a39cd60dbb1f912031a9e9e958f35ba7a2781 (diff) | |
Add Java field declaration
Diffstat (limited to 'src/main')
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 { +} |
