diff --git a/src/TypeChecker/TypeCheckerHm.hs b/src/TypeChecker/TypeCheckerHm.hs index 92af317..1d40a5c 100644 --- a/src/TypeChecker/TypeCheckerHm.hs +++ b/src/TypeChecker/TypeCheckerHm.hs @@ -228,8 +228,10 @@ algoW :: Exp -> Infer (Subst, T.ExpT' Type) algoW = \case err@(EAnn e t) -> do (s1, (e', t')) <- exprErr (algoW e) err + sub1 <- unify t t' + sub2 <- unify t' t unless - (t `isMoreSpecificOrEq` t') + (apply sub1 t == t' && apply sub2 t' == t) ( throwError $ unwords [ "Annotated type:" diff --git a/tests/TestTypeCheckerHm.hs b/tests/TestTypeCheckerHm.hs index e326bd5..5f600ed 100644 --- a/tests/TestTypeCheckerHm.hs +++ b/tests/TestTypeCheckerHm.hs @@ -11,10 +11,8 @@ import Test.Hspec import Prelude ( Bool (..), Either (..), - IO, fmap, foldl1, - mapM_, not, ($), (.),