summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-05 11:32:05 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-05 11:32:05 +0100
commitca6307a275a2ab20c2606cea9a916e22225599dd (patch)
tree65c8c5c583e1990dc3eda357d7c63818e38e31cd /src/main/java/org/zwobble
parent69e672a33dbdeb5882072dbe407ac0138bc58ab8 (diff)
Support nested structs in transient-0
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java
index 1695da7..a8bacbf 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java
@@ -95,6 +95,13 @@ public class JavaTransient0Generator implements Generator {
);
}
+ private JavaTypeRef generateTransient0TypeRef(NamespaceName namespaceName) {
+ return JavaTypeRef.topLevel(
+ this.javaGenerator.namespaceToJavaPackageName(namespaceName),
+ generateTransient0ClassName(namespaceName)
+ );
+ }
+
private JavaIdentifier generateTransient0ClassName(NamespaceName namespaceName) {
var namespaceShortName = namespaceName.shortName();
return this.javaGenerator.generateTypeName(
@@ -203,7 +210,15 @@ public class JavaTransient0Generator implements Generator {
}
case StructType structType -> {
- throw new UnsupportedOperationException("TODO");
+ yield Stream.of(
+ new JavaExpressionStatement(
+ new JavaStaticMethodCall(
+ generateTransient0TypeRef(structType.namespaceName()),
+ encodeMethodName(structType),
+ List.of(value, new JavaRef(OUTPUT_STREAM_NAME))
+ )
+ )
+ );
}
case SumType sumType -> {
@@ -241,7 +256,17 @@ public class JavaTransient0Generator implements Generator {
}
case StructType structType -> {
- throw new UnsupportedOperationException("TODO");
+ yield Stream.of(
+ new JavaLocalVariableDeclaration(
+ Optional.empty(),
+ target,
+ new JavaStaticMethodCall(
+ generateTransient0TypeRef(structType.namespaceName()),
+ decodeMethodName(structType),
+ List.of(new JavaRef(INPUT_STREAM_NAME))
+ )
+ )
+ );
}
case SumType sumType -> {