summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-28 13:32:59 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-28 13:32:59 +0100
commit2acc93baf9964a310f8341a864e10b0bfcc30b9e (patch)
tree4e0bcaa85ba0c19aa9a4d95848134636c3156c4b
parent2111180763129d8a1a6956ff32e2b13bca2a5b72 (diff)
Explicitly don't support type-level values in transient-0
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/errors/CompilerError.java7
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/errors/InternalError.java10
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java9
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java5
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/transient0/Transient0TypeLevelValuesUnsupported.java9
6 files changed, 35 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/errors/CompilerError.java b/src/main/java/org/zwobble/hobgoblin/compiler/errors/CompilerError.java
new file mode 100644
index 0000000..c278293
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/errors/CompilerError.java
@@ -0,0 +1,7 @@
+package org.zwobble.hobgoblin.compiler.errors;
+
+public class CompilerError extends RuntimeException {
+ public CompilerError(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/errors/InternalError.java b/src/main/java/org/zwobble/hobgoblin/compiler/errors/InternalError.java
new file mode 100644
index 0000000..f53d134
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/errors/InternalError.java
@@ -0,0 +1,10 @@
+package org.zwobble.hobgoblin.compiler.errors;
+
+/**
+ * An error in the compiler itself.
+ */
+public class InternalError extends CompilerError {
+ public InternalError(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java b/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java
index c60167f..149f4f6 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java
@@ -6,7 +6,7 @@ import org.zwobble.hobgoblin.compiler.sources.Source;
* An error in the source code. These errors are expected when attempting to
* compile invalid code.
*/
-public class SourceError extends RuntimeException {
+public class SourceError extends CompilerError {
private final Source source;
public SourceError(String message, Source source) {
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 be42c08..65bfdfe 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
@@ -7,6 +7,7 @@ import org.zwobble.hobgoblin.compiler.config.OutputConfig;
import org.zwobble.hobgoblin.compiler.output.generators.Generator;
import org.zwobble.hobgoblin.compiler.output.generators.java.JavaGenerator;
import org.zwobble.hobgoblin.compiler.output.generators.java.JavaGeneratorConfig;
+import org.zwobble.hobgoblin.compiler.output.generators.transient0.Transient0TypeLevelValuesUnsupported;
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*;
import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
import org.zwobble.hobgoblin.compiler.types.*;
@@ -995,7 +996,7 @@ public class JavaTransient0Generator implements Generator {
}
case TypeLevelValueType _ -> {
- throw new UnsupportedOperationException("TODO");
+ throw new Transient0TypeLevelValuesUnsupported();
}
case TypeParam typeParam -> {
@@ -1031,7 +1032,7 @@ public class JavaTransient0Generator implements Generator {
}
case TypeLevelValueType _ -> {
- throw new UnsupportedOperationException("TODO");
+ throw new Transient0TypeLevelValuesUnsupported();
}
case TypeParam _ -> {
@@ -1128,7 +1129,7 @@ public class JavaTransient0Generator implements Generator {
}
case TypeLevelValueType _ -> {
- throw new UnsupportedOperationException("TODO");
+ throw new Transient0TypeLevelValuesUnsupported();
}
case TypeParam typeParam -> {
@@ -1167,7 +1168,7 @@ public class JavaTransient0Generator implements Generator {
}
case TypeLevelValueType _ -> {
- throw new UnsupportedOperationException("TODO");
+ throw new Transient0TypeLevelValuesUnsupported();
}
case TypeParam _ -> {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
index d6aa888..354dfb5 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
@@ -6,6 +6,7 @@ import org.zwobble.hobgoblin.compiler.config.OutputConfig;
import org.zwobble.hobgoblin.compiler.output.generators.Generator;
import org.zwobble.hobgoblin.compiler.output.generators.rust.RustGenerator;
import org.zwobble.hobgoblin.compiler.output.generators.rust.RustGeneratorConfig;
+import org.zwobble.hobgoblin.compiler.output.generators.transient0.Transient0TypeLevelValuesUnsupported;
import org.zwobble.hobgoblin.compiler.output.lang.rust.RustTypes;
import org.zwobble.hobgoblin.compiler.output.lang.rust.ast.*;
import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
@@ -838,7 +839,7 @@ public class RustTransient0Generator implements Generator {
}
case TypeLevelValueType _ -> {
- yield new RustExpressionStatement(generateTodo());
+ throw new Transient0TypeLevelValuesUnsupported();
}
case TypeParam typeParam -> {
@@ -886,7 +887,7 @@ public class RustTransient0Generator implements Generator {
}
case TypeLevelValueType _ -> {
- yield generateTodo();
+ throw new Transient0TypeLevelValuesUnsupported();
}
case TypeParam typeParam -> {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/transient0/Transient0TypeLevelValuesUnsupported.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/transient0/Transient0TypeLevelValuesUnsupported.java
new file mode 100644
index 0000000..fff7697
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/transient0/Transient0TypeLevelValuesUnsupported.java
@@ -0,0 +1,9 @@
+package org.zwobble.hobgoblin.compiler.output.generators.transient0;
+
+import org.zwobble.hobgoblin.compiler.errors.InternalError;
+
+public class Transient0TypeLevelValuesUnsupported extends InternalError {
+ public Transient0TypeLevelValuesUnsupported() {
+ super("Type-level values in transient-0 are unsupported");
+ }
+}