summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-13 19:57:26 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-13 19:57:26 +0100
commit999be6c9af9a6ebce18fa2e5700e7491f5a5070e (patch)
tree7c9d7fdd696fb390a0c4b2e4db2738bc1a967aa8 /src/main/java/org
parent48ddc308c2ad9cbd85c234e86ad665d378810d3f (diff)
Throw exception when variant tag is unrecognised
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java14
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java2
2 files changed, 14 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 ac38727..b1533d2 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
@@ -462,8 +462,18 @@ public class JavaTransient0Generator implements Generator {
cases.add(new JavaSwitchRule(
new JavaCaseDefault(),
- // TODO: throw an exception
- new JavaBlock(List.of(new JavaReturn(new JavaNullLiteral())))
+ new JavaBlock(List.of(
+ new JavaThrowStatement(new JavaNewExpression(
+ JavaTypeRef.RUNTIME_EXCEPTION,
+ List.of(
+ new JavaBinaryOperation(
+ JavaBinaryOperator.ADD,
+ new JavaStringLiteral("unexpected " + sumDefinition.type().describe() + " variant tag: "),
+ new JavaRef(variantTag)
+ )
+ )
+ ))
+ ))
));
decodeStatements.add(new JavaSwitchStatement(
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java
index 8dbca61..81e0acc 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java
@@ -85,6 +85,8 @@ public record JavaTypeRef(JavaPackageName packageName, List<JavaIdentifier> type
public static final JavaTypeRef OUTPUT_STREAM = topLevel(JavaPackages.JAVA_IO, JavaIdentifier.of("OutputStream"));
+ public static final JavaTypeRef RUNTIME_EXCEPTION = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("RuntimeException"));
+
public static final JavaTypeRef STANDARD_CHARSETS = topLevel(JavaPackages.JAVA_NIO_CHARSET, JavaIdentifier.of("StandardCharsets"));
public static final JavaTypeRef STREAM = topLevel(JavaPackages.JAVA_UTIL_STREAM, JavaIdentifier.of("Stream"));