From db1ae9e80a9b330f399f5bdbff8ee402d41a9f0e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 10 Aug 2026 10:22:57 +0100 Subject: Extract singleton generation methods --- .../generators/javatypes/JavaTypesGenerator.java | 41 +++++++++++++--------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java index 3dcbd61..709ef12 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java @@ -148,23 +148,8 @@ public class JavaTypesGenerator implements Generator { var body = new ArrayList(); if (structDefinition.fields().isEmpty()) { - body.add(new JavaFieldDeclaration( - JavaVisibility.PUBLIC, - JavaMemberKind.STATIC, - javaTypeRef, - JavaGenerator.INSTANCE_FIELD_NAME, - Optional.of(new JavaNewExpression( - javaTypeRef, - List.of() - )) - )); - - body.add(new JavaConstructorDeclaration( - javaTypeRef.typeNames().getLast(), - JavaVisibility.PRIVATE, - List.of(), - new JavaBlock(List.of()) - )); + body.add(generateStructSingletonInstanceField(javaTypeRef)); + body.add(generateStructSingletonConstructor(javaTypeRef)); } body.add(new JavaMethodDeclaration( @@ -203,6 +188,28 @@ public class JavaTypesGenerator implements Generator { } } + private static JavaFieldDeclaration generateStructSingletonInstanceField(JavaTypeRef javaTypeRef) { + return new JavaFieldDeclaration( + JavaVisibility.PUBLIC, + JavaMemberKind.STATIC, + javaTypeRef, + JavaGenerator.INSTANCE_FIELD_NAME, + Optional.of(new JavaNewExpression( + javaTypeRef, + List.of() + )) + ); + } + + private static JavaConstructorDeclaration generateStructSingletonConstructor(JavaTypeRef javaTypeRef) { + return new JavaConstructorDeclaration( + javaTypeRef.typeNames().getLast(), + JavaVisibility.PRIVATE, + List.of(), + new JavaBlock(List.of()) + ); + } + private JavaRecordDeclaration generateStructDefinitionBuilder( TypedStructDefinitionNode structDefinition, List components, -- cgit v1.2.3