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/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 -> {