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