diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-25 18:17:19 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-26 10:56:49 +0100 |
| commit | ad3e527a337ba2c02eac1aafdc17124c76cc1b92 (patch) | |
| tree | da177b3bd140971fd0e9c70a55630ce0a512dde4 /src/main/java | |
| parent | be132b1abe3ef9d1663f15799b971d5cfee3f469 (diff) | |
Throw better error when value is not type
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java index b5dbd5d..532d8de 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedTypeLevelExpressionNode.java @@ -10,6 +10,8 @@ public sealed interface UntypedTypeLevelExpressionNode permits org.zwobble.hobgo // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode.Builder body } + public org.zwobble.hobgoblin.compiler.sources.Source source(); + // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode body // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode body } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java index 5003e3a..c291aaf 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java @@ -258,7 +258,7 @@ public class TypeChecker { ); } - private static TypedTypeLevelExpressionNode<Type> typeCheckMetaType( + static TypedTypeLevelExpressionNode<Type> typeCheckMetaType( UntypedTypeLevelExpressionNode untyped, TypeCheckerNamespaceContext context ) { @@ -266,8 +266,11 @@ public class TypeChecker { if (typed.value() instanceof Type) { return (TypedTypeLevelExpressionNode<Type>) typed; } else { - // TODO: better error - throw new RuntimeException("not a metatype"); + throw new UnexpectedTypeError( + new TypeSet.MetaType(), + new TypeLevelValueType(typed.value()), + untyped.source() + ); } } |
