@@ -587,7 +587,12 @@ check' val kt@(KindedType ty kind) = do
587 return $ TypedValue True val' kt
587 return $ TypedValue True val' kt
588check' (PositionedValue pos _ val) ty =
588check' (PositionedValue pos _ val) ty =
589 warnAndRethrowWithPosition pos $ check' val ty
589 warnAndRethrowWithPosition pos $ check' val ty
591+ TypedValue _ val' ty' <- infer val
592+ mt <- subsumes (Just val') ty' ty
590−check' val ty = throwError . errorMessage $ ExprDoesNotHaveType val ty
594+ Nothing -> throwError . errorMessage $ SubsumptionCheckFailed
595+ Just v' -> return $ TypedValue True v' ty
592containsTypeSynonyms :: Type -> Bool
597containsTypeSynonyms :: Type -> Bool
593containsTypeSynonyms = everythingOnTypes (||) go where
598containsTypeSynonyms = everythingOnTypes (||) go where