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.java63
1 files changed, 35 insertions, 28 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 8f9ea13..f4ed937 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
@@ -80,34 +80,7 @@ public class JavaTypesGenerator implements Generator {
case TypedSumDefinitionNode sumDefinition -> {
var javaCompilationUnit = new JavaCompilationUnit(
packageParts,
- new JavaInterfaceDeclaration(
- sumDefinition.name(),
- JavaInterfaceOpenness.SEALED,
- sumDefinition.variants().stream()
- .map(variant -> generateTypeRef(variant.type(), context))
- .toList(),
- List.of(
- new JavaInterfaceDeclaration(
- BUILDER_TYPE_NAME,
- JavaInterfaceOpenness.OPEN,
- List.of(),
- List.of(
- new JavaMethodDeclaration(
- "build",
- JavaVisibility.PUBLIC,
- JavaMethodKind.INSTANCE,
- generateTypeRef(sumDefinition.type(), context),
- List.of(),
- Optional.empty()
- )
- ),
- JavaCustomArea.forType(generateBuilderTypeRef(sumDefinition.type()), "body"),
- DocComment.EMPTY
- )
- ),
- JavaCustomArea.forType(generateTypeRef(sumDefinition.type(), context), "body"),
- sumDefinition.docComment()
- )
+ generateSumDefinition(sumDefinition, context)
);
javaCompilationUnits.add(javaCompilationUnit);
@@ -246,6 +219,40 @@ public class JavaTypesGenerator implements Generator {
);
}
+ private JavaInterfaceDeclaration generateSumDefinition(
+ TypedSumDefinitionNode sumDefinition,
+ Context context
+ ) {
+ return new JavaInterfaceDeclaration(
+ sumDefinition.name(),
+ JavaInterfaceOpenness.SEALED,
+ sumDefinition.variants().stream()
+ .map(variant -> generateTypeRef(variant.type(), context))
+ .toList(),
+ List.of(
+ new JavaInterfaceDeclaration(
+ BUILDER_TYPE_NAME,
+ JavaInterfaceOpenness.OPEN,
+ List.of(),
+ List.of(
+ new JavaMethodDeclaration(
+ "build",
+ JavaVisibility.PUBLIC,
+ JavaMethodKind.INSTANCE,
+ generateTypeRef(sumDefinition.type(), context),
+ List.of(),
+ Optional.empty()
+ )
+ ),
+ JavaCustomArea.forType(generateBuilderTypeRef(sumDefinition.type()), "body"),
+ DocComment.EMPTY
+ )
+ ),
+ JavaCustomArea.forType(generateTypeRef(sumDefinition.type(), context), "body"),
+ sumDefinition.docComment()
+ );
+ }
+
private List<String> namespaceToJavaPackageParts(NamespaceName namespaceName) {
return this.javaGenerator.namespaceToJavaPackageParts(namespaceName);
}