From 2acc93baf9964a310f8341a864e10b0bfcc30b9e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 28 Aug 2026 13:32:59 +0100 Subject: Explicitly don't support type-level values in transient-0 --- .../org/zwobble/hobgoblin/compiler/errors/CompilerError.java | 7 +++++++ .../org/zwobble/hobgoblin/compiler/errors/InternalError.java | 10 ++++++++++ .../org/zwobble/hobgoblin/compiler/errors/SourceError.java | 2 +- .../generators/javatransient0/JavaTransient0Generator.java | 9 +++++---- .../generators/rusttransient0/RustTransient0Generator.java | 5 +++-- .../transient0/Transient0TypeLevelValuesUnsupported.java | 9 +++++++++ 6 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/errors/CompilerError.java create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/errors/InternalError.java create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/output/generators/transient0/Transient0TypeLevelValuesUnsupported.java (limited to 'src/main/java') 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"); + } +} -- cgit v1.2.3