diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-19 18:30:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-19 18:30:28 +0100 |
| commit | f4bccfa54ba5158d00f866d4265a04cb049f7dbd (patch) | |
| tree | b3dac4d10f035ec95f8210e9682f1aa40be105ef /src/main/java/org/zwobble | |
| parent | 64344428233e3ed4250477b52f5eb560e168c29b (diff) | |
Generate Java types for enum
Diffstat (limited to 'src/main/java/org/zwobble')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java | 23 |
1 files changed, 21 insertions, 2 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 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 |
