From f4bccfa54ba5158d00f866d4265a04cb049f7dbd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 19 Jun 2026 18:30:28 +0100 Subject: Generate Java types for enum --- .../generators/javatypes/JavaTypesGenerator.java | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (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 a0f92ce..4001b01 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 @@ -65,8 +65,13 @@ public class JavaTypesGenerator implements Generator { for (var statement : namespace.body()) { switch (statement) { - case TypedEnumDefinitionNode enumDefinitionNode -> { - throw new UnsupportedOperationException("TODO"); + case TypedEnumDefinitionNode enumDefinition -> { + var javaCompilationUnit = new JavaCompilationUnit( + packageParts, + generateEnumDefinition(enumDefinition, context) + ); + + javaCompilationUnits.add(javaCompilationUnit); } case TypedNativeTypeDefinitionNode nativeTypeDefinition -> { @@ -95,6 +100,20 @@ public class JavaTypesGenerator implements Generator { return javaCompilationUnits; } + private JavaTypeDeclaration generateEnumDefinition( + TypedEnumDefinitionNode enumDefinition, + Context context + ) { + return new JavaEnumDeclaration( + enumDefinition.name(), + enumDefinition.variants().stream() + .map(variant -> new JavaEnumConstant(variant.name())) + .toList(), + JavaCustomArea.forType(generateTypeRef(enumDefinition.type(), context), "body"), + enumDefinition.docComment() + ); + } + private JavaRecordDeclaration generateStructDefinition( TypedStructDefinitionNode structDefinition, Context context -- cgit v1.2.3