summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-23 11:05:03 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-23 11:05:03 +0100
commitc7fbd6c9fdc3fe140b0f1ff713855ab3a3ad599e (patch)
treec8f389784231f92458b671b68e2562e52891a6fe /src
parentea7f313b29b294e19f9387699d097629f8623575 (diff)
Add a notion of JavaCustomArea to type declarations
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaClassDeclaration.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaCustomArea.java7
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaInterfaceDeclaration.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaRecordDeclaration.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java1
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java9
7 files changed, 23 insertions, 0 deletions
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<JavaClassBodyDeclaration> 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<String> 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<JavaTypeRef> 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<JavaRecordComponent> components,
List<JavaTypeRef> implementsTypes,
List<JavaClassBodyDeclaration> 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
);