From 3b79d116965efc20e1065cbb24e7ad32ad038a0a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 13 Jul 2026 20:50:25 +0100 Subject: Add static field declarations to Java AST --- .../compiler/output/lang/java/JavaWriterTests.java | 27 +++++++++++++++++----- .../lang/java/ast/JavaFieldDeclarationMatcher.java | 6 +++++ 2 files changed, 27 insertions(+), 6 deletions(-) (limited to 'src/test/java/org') diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java index 15c294f..cd4fdfc 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java @@ -589,18 +589,33 @@ public class JavaWriterTests { // === Field declarations === @Test - public void fieldDeclaration() throws IOException { - var java = new JavaFieldDeclaration( - JavaVisibility.PRIVATE, - JavaTypeRef.INT, - JavaIdentifier.of("count") - ); + public void fieldDeclarationInstance() throws IOException { + var java = JavaFieldDeclaration.arbitrary() + .withVisibility(JavaVisibility.PRIVATE) + .withKind(JavaMemberKind.INSTANCE) + .withType(JavaTypeRef.INT) + .withName(JavaIdentifier.of("count")) + .build(); var string = write(writer -> writer.writeClassBodyDeclaration(java)); assertThat(string, equalTo("private final int count;")); } + @Test + public void fieldDeclarationInstanceStatic() throws IOException { + var java = JavaFieldDeclaration.arbitrary() + .withVisibility(JavaVisibility.PRIVATE) + .withKind(JavaMemberKind.STATIC) + .withType(JavaTypeRef.INT) + .withName(JavaIdentifier.of("count")) + .build(); + + var string = write(writer -> writer.writeClassBodyDeclaration(java)); + + assertThat(string, equalTo("private static final int count;")); + } + // === Method declarations === @Test diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclarationMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclarationMatcher.java index db4bbcb..1eac6ef 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclarationMatcher.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaFieldDeclarationMatcher.java @@ -34,6 +34,12 @@ public class JavaFieldDeclarationMatcher implements org.zwobble.precisely.Matche return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclarationMatcher(submatchers); } + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclarationMatcher withKind(org.zwobble.precisely.Matcher kind) { + var submatchers = new java.util.ArrayList>(this.submatchers); + submatchers.add(org.zwobble.precisely.Matchers.has("kind", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration::kind, kind)); + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclarationMatcher(submatchers); + } + public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclarationMatcher withType(org.zwobble.precisely.Matcher type) { var submatchers = new java.util.ArrayList>(this.submatchers); submatchers.add(org.zwobble.precisely.Matchers.has("type", org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaFieldDeclaration::type, type)); -- cgit v1.2.3