summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java10
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,