diff options
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 |
