diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java | 10 |
1 files changed, 8 insertions, 2 deletions
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<SimpleNativeType>) 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<SimpleNativeType>) receiver; + yield new ConstructedNativeType(narrowReceiver, args); + } + }; return new TypedConstructedTypeNode( constructedType, |
