From ad3e527a337ba2c02eac1aafdc17124c76cc1b92 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 25 Jun 2026 18:17:19 +0100 Subject: Throw better error when value is not type --- .../compiler/ast/untyped/UntypedTypeLevelExpressionNode.java | 2 ++ .../org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src/main/java') 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 typeCheckMetaType( + static TypedTypeLevelExpressionNode typeCheckMetaType( UntypedTypeLevelExpressionNode untyped, TypeCheckerNamespaceContext context ) { @@ -266,8 +266,11 @@ public class TypeChecker { if (typed.value() instanceof Type) { return (TypedTypeLevelExpressionNode) typed; } else { - // TODO: better error - throw new RuntimeException("not a metatype"); + throw new UnexpectedTypeError( + new TypeSet.MetaType(), + new TypeLevelValueType(typed.value()), + untyped.source() + ); } } -- cgit v1.2.3