From f8b54eca1cedff1fcccb099b3cd1dbea81a1410b Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 2 Aug 2026 14:07:16 +0100 Subject: Don't assume inner type of type constructor --- .../zwobble/hobgoblin/compiler/typechecker/TypeChecker.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/zwobble') 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 2d496e5..4b02f60 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java @@ -394,7 +394,7 @@ public class TypeChecker { ) { var typedReceiver = typeCheckTypeLevelExpression(untyped.receiver(), context); // TODO: check this properly - var receiver = (TypeConstructor) typedReceiver.value(); + var receiver = (TypeConstructor) typedReceiver.value(); if (untyped.args().size() != receiver.params().size()) { throw new WrongNumberOfTypeLevelArgsError( @@ -408,7 +408,13 @@ public class TypeChecker { .map(untypedArg -> typeCheckMetaType(untypedArg, context).value()) .toList(); - var constructedType = new ConstructedNativeType(receiver, args); + var constructedType = switch (receiver.genericType()) { + case SimpleNativeType _ -> { + @SuppressWarnings("unchecked") + var narrowReceiver = (TypeConstructor) receiver; + yield new ConstructedNativeType(narrowReceiver, args); + } + }; return new TypedConstructedTypeNode( constructedType, -- cgit v1.2.3