Prevent infinite loop unifying variable with itself

This commit is contained in:
Joscha 2020-12-14 13:59:13 +00:00
parent 09a42340fc
commit f0e291a84d

View file

@ -95,6 +95,7 @@ unifyTerm t1 t2 = do
case (t1', t2') of case (t1', t2') of
(TStat s1, TStat s2) -> unifyStat s1 s2 (TStat s1, TStat s2) -> unifyStat s1 s2
(TInt i1, TInt i2) -> guard $ i1 == i2 (TInt i1, TInt i2) -> guard $ i1 == i2
(TVar v, TVar w) | v == w -> pure ()
(TVar v, t) -> bindTerm v t (TVar v, t) -> bindTerm v t
(t, TVar v) -> bindTerm v t (t, TVar v) -> bindTerm v t
(_, _) -> empty (_, _) -> empty