summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java18
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeDeclaration.java6
2 files changed, 19 insertions, 5 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 827cab9..3187b27 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
@@ -223,15 +223,27 @@ public class JavaTypesGenerator implements Generator {
TypedSumDefinitionNode sumDefinition,
Context context
) {
+ var body = new ArrayList<JavaClassBodyDeclaration>();
+ body.add(generateSumDefinitionBuilder(sumDefinition, context));
+
+ for (var field : sumDefinition.fields()) {
+ body.add(new JavaMethodDeclaration(
+ field.name(),
+ JavaVisibility.PUBLIC,
+ JavaMethodKind.INSTANCE,
+ generateTypeRef(field.type().value(), context),
+ List.of(),
+ Optional.empty()
+ ));
+ }
+
return new JavaInterfaceDeclaration(
sumDefinition.name(),
JavaInterfaceOpenness.SEALED,
sumDefinition.variants().stream()
.map(variant -> generateTypeRef(variant.type(), context))
.toList(),
- List.of(
- generateSumDefinitionBuilder(sumDefinition, context)
- ),
+ body,
JavaCustomArea.forType(generateTypeRef(sumDefinition.type(), context), "body"),
sumDefinition.docComment()
);
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 1824efc..b4c5d49 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
@@ -10,8 +10,10 @@ public sealed interface JavaTypeDeclaration permits org.zwobble.hobgoblin.compil
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration.Builder body
}
+ public String name();
+
+ public org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCustomArea customArea();
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration body
- String name();
- JavaCustomArea customArea();
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaTypeDeclaration body
}