Default to invariant when the variance of the type vars is unknown
This commit is contained in:
parent
8d419bc54f
commit
9e3f42db2c
@ -815,6 +815,7 @@ infer(Contracts, Options) ->
|
|||||||
%% Set the variance for builtin types
|
%% Set the variance for builtin types
|
||||||
ets_insert(type_vars_variance, {"list", [covariant]}),
|
ets_insert(type_vars_variance, {"list", [covariant]}),
|
||||||
ets_insert(type_vars_variance, {"option", [covariant]}),
|
ets_insert(type_vars_variance, {"option", [covariant]}),
|
||||||
|
ets_insert(type_vars_variance, {"map", [covariant, covariant]}),
|
||||||
ets_insert(type_vars_variance, {"oracle", [contravariant, covariant]}),
|
ets_insert(type_vars_variance, {"oracle", [contravariant, covariant]}),
|
||||||
ets_insert(type_vars_variance, {"oracle_query", [covariant, covariant]}),
|
ets_insert(type_vars_variance, {"oracle_query", [covariant, covariant]}),
|
||||||
|
|
||||||
@ -2777,7 +2778,7 @@ unify1(Env, {app_t, _, {Tag, _, F}, Args1}, {app_t, _, {Tag, _, F}, Args2}, Vari
|
|||||||
invariant -> invariant;
|
invariant -> invariant;
|
||||||
_ -> Vs
|
_ -> Vs
|
||||||
end;
|
end;
|
||||||
_ -> Variance
|
_ -> invariant
|
||||||
end,
|
end,
|
||||||
unify1(Env, Args1, Args2, Variances, When);
|
unify1(Env, Args1, Args2, Variances, When);
|
||||||
unify1(Env, {tuple_t, _, As}, {tuple_t, _, Bs}, Variance, When)
|
unify1(Env, {tuple_t, _, As}, {tuple_t, _, Bs}, Variance, When)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user