Add some missing equations for type-literals.
authorIavor S. Diatchki <iavor.diatchki@gmail.com>
Sat, 31 Mar 2012 19:14:49 +0000 (12:14 -0700)
committerIavor S. Diatchki <iavor.diatchki@gmail.com>
Sat, 31 Mar 2012 19:14:49 +0000 (12:14 -0700)
compiler/types/Unify.lhs

index 68a61fd..50a0fcf 100644 (file)
@@ -199,6 +199,8 @@ match menv subst (AppTy ty1a ty1b) ty2
   = do { subst' <- match menv subst ty1a ty2a
        ; match menv subst' ty1b ty2b }
 
+match _ subst (LitTy x) (LitTy y) | x == y  = return subst
+
 match _ _ _ _
   = Nothing
 
@@ -339,6 +341,8 @@ typesCantMatch prs = any (\(s,t) -> cant_match s t) prs
        | Just (f1, a1) <- repSplitAppTy_maybe ty1
        = cant_match f1 f2 || cant_match a1 a2
 
+    cant_match (LitTy x) (LitTy y) = x /= y
+
     cant_match _ _ = False      -- Safe!
 
 -- Things we could add;
@@ -453,6 +457,8 @@ unify subst ty1 (AppTy ty2a ty2b)
   = do { subst' <- unify subst ty1a ty2a
         ; unify subst' ty1b ty2b }
 
+unify subst (LitTy x) (LitTy y) | x == y = return subst
+
 unify _ ty1 ty2 = failWith (misMatch ty1 ty2)
        -- ForAlls??