diff --git a/eqwalizer/test_projects/_cli/otp_funs.cli b/eqwalizer/test_projects/_cli/otp_funs.cli index 0384989..37a44a0 100644 --- a/eqwalizer/test_projects/_cli/otp_funs.cli +++ b/eqwalizer/test_projects/_cli/otp_funs.cli @@ -14,10 +14,10 @@ ets 16 filename 21 gb_sets 26 proplists 51 -maps 149 +maps 150 lists 169 erlang 396 Per app stats: kernel 21 erts 396 -stdlib 471 +stdlib 472 diff --git a/eqwalizer/test_projects/check/src/custom.erl b/eqwalizer/test_projects/check/src/custom.erl index 1d7b31b..35845e3 100644 --- a/eqwalizer/test_projects/check/src/custom.erl +++ b/eqwalizer/test_projects/check/src/custom.erl @@ -2284,3 +2284,14 @@ re_replace_5_neg(Subj) -> re_replace_6_neg(Subj) -> Res = re:replace(Subj, "+", "-", [{return, something}]), Res. + +-spec maps_fold_keys(#{a => atom(), b => atom()}) -> ok. +maps_fold_keys(M) -> + maps:fold( + fun(K, _V, Acc) -> process_key(K), Acc end, + ok, + M + ). + +-spec process_key(a | b) -> ok. +process_key(_K) -> ok. \ No newline at end of file diff --git a/eqwalizer/test_projects/check/src/custom.erl.check b/eqwalizer/test_projects/check/src/custom.erl.check index 8fba682..9eabde9 100644 --- a/eqwalizer/test_projects/check/src/custom.erl.check +++ b/eqwalizer/test_projects/check/src/custom.erl.check @@ -3081,3 +3081,20 @@ re_replace_6_neg(Subj) -> | ERROR | | | because | | 'something' is not compatible with 'iodata' | 'list' | 'binary' Res. | | + | | +-spec maps_fold_keys(#{a => atom(), b => a…… | +maps_fold_keys(M) -> | ERROR | + maps:fold( | | + fun(K, _V, Acc) -> process_key(K),…… | K. + | | Expression has type: atom() + | | Context expected type: 'a' | 'b' + | | + | | atom() is not compatible with 'a' | 'b' + | | because + | | atom() is not compatible with 'a' + ok, | | + M | | + ). | | + | | +-spec process_key(a | b) -> ok. | | +process_key(_K) -> ok. | OK |