@@ -130,6 +130,10 @@ unifyRows r1 r2 =
130 rest <- fresh
130 rest <- fresh
131 u1 =:= rowFromList (sd2, rest)
131 u1 =:= rowFromList (sd2, rest)
132 u2 =:= rowFromList (sd1, rest)
132 u2 =:= rowFromList (sd1, rest)
133+ unifyRows' sd1 (SaturatedTypeSynonym name args) sd2 r2' = do
134+ r1' <- expandTypeSynonym name $ args
135+ unifyRows (rowFromList (sd1, r1')) (rowFromList (sd2, r2'))
136+ unifyRows' sd1 r1' sd2 r2'@(SaturatedTypeSynonym _ _) = unifyRows' sd2 r2' sd1 r1'
133 unifyRows' [] REmpty [] REmpty = return ()
137 unifyRows' [] REmpty [] REmpty = return ()
134 unifyRows' [] (TypeVar v1) [] (TypeVar v2) | v1 == v2 = return ()
138 unifyRows' [] (TypeVar v1) [] (TypeVar v2) | v1 == v2 = return ()
135 unifyRows' [] (Skolem _ s1 _) [] (Skolem _ s2 _) | s1 == s2 = return ()
139 unifyRows' [] (Skolem _ s1 _) [] (Skolem _ s2 _) | s1 == s2 = return ()