Add tests for calling constrained functions

This commit is contained in:
Gaith Hallak
2022-06-14 13:27:00 +04:00
parent 6c17e57a7c
commit fc08fe09a5
3 changed files with 25 additions and 2 deletions
+8
View File
@@ -2645,6 +2645,14 @@ unify1(_Env, {uvar, A, R}, T, When) ->
end;
unify1(Env, T, {uvar, A, R}, When) ->
unify1(Env, {uvar, A, R}, T, When);
unify1(Env, {constrained_t, _, Cs, UVar = {uvar, _, _}}, Type2, When) ->
[ add_constraint({is_ord, UVar}) || {id, _, "ord"} <- Cs ],
[ add_constraint({is_eq, UVar}) || {id, _, "eq"} <- Cs ],
unify1(Env, UVar, Type2, When);
unify1(Env, Type1, UVar = {constrained_t, _, Cs, {uvar, _, _}}, When) ->
[ add_constraint({is_ord, UVar}) || {id, _, "ord"} <- Cs ],
[ add_constraint({is_eq, UVar}) || {id, _, "eq"} <- Cs ],
unify1(Env, Type1, UVar, When);
unify1(_Env, {tvar, _, X}, {tvar, _, X}, _When) -> true; %% Rigid type variables
unify1(_Env, {constrained_t, _, Cs, {tvar, _, X}}, {constrained_t, _, Cs, {tvar, _, X}}, _When) -> true;
unify1(Env, [A|B], [C|D], When) ->