From c7fbd6c9fdc3fe140b0f1ff713855ab3a3ad599e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 23 May 2026 11:05:03 +0100 Subject: Add a notion of JavaCustomArea to type declarations --- .../compiler/output/generators/javatypes/JavaTypesGenerator.java | 3 +++ .../compiler/output/lang/java/ast/JavaClassDeclaration.java | 1 + .../hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java | 7 +++++++ .../compiler/output/lang/java/ast/JavaInterfaceDeclaration.java | 1 + .../compiler/output/lang/java/ast/JavaRecordDeclaration.java | 1 + .../compiler/output/lang/java/ast/JavaTypeDeclaration.java | 1 + .../hobgoblin/compiler/output/lang/java/JavaWriterTests.java | 9 +++++++++ 7 files changed, 23 insertions(+) create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java (limited to 'src') 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 d2b1073..77c2ecd 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 @@ -115,6 +115,7 @@ public class JavaTypesGenerator implements Generator { sumDefinition.variants().stream() .map(variant -> generateTypeRef(variant.type(), context)) .toList(), + JavaCustomArea.EMPTY, sumDefinition.docComment() ) ); @@ -167,6 +168,7 @@ public class JavaTypesGenerator implements Generator { ), generateStructDefinitionBuilder(structDefinition, components, context) ), + JavaCustomArea.EMPTY, structDefinition.docComment() ); } @@ -214,6 +216,7 @@ public class JavaTypesGenerator implements Generator { components, List.of(), body, + JavaCustomArea.EMPTY, DocComment.EMPTY ); } 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 index 948be8d..4e6c4b7 100644 --- 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 @@ -7,6 +7,7 @@ import java.util.List; public record JavaClassDeclaration( String name, List body, + JavaCustomArea customArea, DocComment docComment ) implements JavaTypeDeclaration { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java new file mode 100644 index 0000000..42d38d1 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java @@ -0,0 +1,7 @@ +package org.zwobble.hobgoblin.compiler.output.lang.java.ast; + +import java.util.List; + +public record JavaCustomArea(List lines) { + public static final JavaCustomArea EMPTY = new JavaCustomArea(List.of()); +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java index 2f5a5b4..c1c0fc5 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java @@ -7,6 +7,7 @@ import java.util.List; public record JavaInterfaceDeclaration( String name, List permitsTypes, + JavaCustomArea customArea, DocComment docComment ) implements JavaTypeDeclaration { } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java index 0805a46..709d889 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java @@ -9,6 +9,7 @@ public record JavaRecordDeclaration( List components, List implementsTypes, List body, + JavaCustomArea customArea, DocComment docComment ) 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 2ad8967..0ad9dd2 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 @@ -2,4 +2,5 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public sealed interface JavaTypeDeclaration extends JavaClassBodyDeclaration permits JavaClassDeclaration, JavaInterfaceDeclaration, JavaRecordDeclaration { String name(); + JavaCustomArea customArea(); } 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 f54f0bf..280dc21 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 @@ -18,6 +18,7 @@ public class JavaWriterTests { var java = new JavaClassDeclaration( "Rectangle", List.of(), + JavaCustomArea.EMPTY, DocComment.EMPTY ); @@ -49,6 +50,7 @@ public class JavaWriterTests { JavaBlock.EMPTY ) ), + JavaCustomArea.EMPTY, DocComment.EMPTY ); @@ -70,6 +72,7 @@ public class JavaWriterTests { var java = new JavaClassDeclaration( "Point", List.of(), + JavaCustomArea.EMPTY, new DocComment("A 2D point.") ); @@ -87,6 +90,7 @@ public class JavaWriterTests { var java = new JavaInterfaceDeclaration( "Shape", List.of(), + JavaCustomArea.EMPTY, DocComment.EMPTY ); @@ -106,6 +110,7 @@ public class JavaWriterTests { JavaTypeRef.topLevel(List.of("abc", "def"), "One"), JavaTypeRef.topLevel(List.of("abc", "def"), "Two") ), + JavaCustomArea.EMPTY, DocComment.EMPTY ); @@ -122,6 +127,7 @@ public class JavaWriterTests { var java = new JavaInterfaceDeclaration( "Shape", List.of(), + JavaCustomArea.EMPTY, new DocComment("A 2D shape.") ); @@ -141,6 +147,7 @@ public class JavaWriterTests { List.of(), List.of(), List.of(), + JavaCustomArea.EMPTY, DocComment.EMPTY ); @@ -159,6 +166,7 @@ public class JavaWriterTests { List.of(), List.of(), List.of(), + JavaCustomArea.EMPTY, new DocComment("A 2D point.") ); @@ -193,6 +201,7 @@ public class JavaWriterTests { JavaBlock.EMPTY ) ), + JavaCustomArea.EMPTY, DocComment.EMPTY ); -- cgit v1.2.3