summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java21
1 files changed, 16 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 bd56880..4bfda14 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
@@ -108,7 +108,7 @@ public class JavaTypesGenerator implements Generator {
return new JavaEnumDeclaration(
enumDefinition.name(),
enumDefinition.variants().stream()
- .map(variant -> new JavaEnumConstant(Casing.lowerCamelCaseToUpperCase(variant.name())))
+ .map(variant -> new JavaEnumConstant(generateEnumConstantName(variant.name())))
.toList(),
JavaCustomArea.forType(generateTypeRef(enumDefinition.type(), context), "body"),
enumDefinition.docComment()
@@ -347,7 +347,10 @@ public class JavaTypesGenerator implements Generator {
}
case EnumType enumType -> {
- throw new UnsupportedOperationException("TODO");
+ yield new JavaStaticFieldAccess(
+ generateTypeRef(enumType, context),
+ generateEnumConstantName(context.enumVariants(enumType).getFirst().name())
+ );
}
case SimpleNativeType simpleNativeType -> {
@@ -387,7 +390,7 @@ public class JavaTypesGenerator implements Generator {
var seenTypes = new HashSet<Type>();
seenTypes.add(sumType);
// TODO: better error
- return context.variants(sumType).stream()
+ return context.sumVariants(sumType).stream()
.filter(variant -> isNonRecursivelyConstructable(variant, seenTypes, context))
.findFirst()
.orElseThrow();
@@ -419,7 +422,7 @@ public class JavaTypesGenerator implements Generator {
case SumType sumType -> {
var newSeenTypes = new HashSet<>(seenTypes);
newSeenTypes.add(type);
- var result = context.variants(sumType).stream()
+ var result = context.sumVariants(sumType).stream()
.anyMatch(variant -> isNonRecursivelyConstructable(variant, seenTypes, context));
yield result;
}
@@ -432,6 +435,10 @@ public class JavaTypesGenerator implements Generator {
};
}
+ private static String generateEnumConstantName(String name) {
+ return Casing.lowerCamelCaseToUpperCase(name);
+ }
+
private Optional<JavaNativeTypeConfig> nativeTypeConfig(SimpleNativeType type) {
return this.javaGeneratorConfig.nativeTypeConfig(type);
}
@@ -443,6 +450,10 @@ public class JavaTypesGenerator implements Generator {
this.typesInfo = typesInfo;
}
+ public List<EnumVariant> enumVariants(EnumType type) {
+ return this.typesInfo.enumVariants(type);
+ }
+
public List<Field> fieldsOf(StructType type) {
return this.typesInfo.fieldsOf(type);
}
@@ -451,7 +462,7 @@ public class JavaTypesGenerator implements Generator {
return this.typesInfo.variantOf(type);
}
- public List<Type> variants(SumType type) {
+ public List<Type> sumVariants(SumType type) {
return this.typesInfo.sumVariants(type);
}
}