[erlang-questions] Why does Dialyzer crash on this map?
Björn-Egil Dahlberg
egil@REDACTED
Thu Apr 30 15:50:26 CEST 2015
I've finally manage to pop my stack to this issue.
I can confirm that your example does trigger an dialyzer error on 17.5
.. though that is not the case on current master. I believe other fixes
in format has remedied this problem on master.
If you have the possibility, recheck your codebase with dialyzer using
current master or 18.0-rc1 and see if any other problems persist.
// Björn-Egil
On 04/23/2015 12:46 PM, Ali Sabil wrote:
> Any update regarding this?
>
> On Thu, Apr 9, 2015 at 5:21 PM Ali Sabil <ali.sabil@REDACTED
> <mailto:ali.sabil@REDACTED>> wrote:
>
> Sorry for the late reply, I finally managed to get a minimal test
> case that reproduces the bug in 17.5:
>
> -module(sum).
> -export([
> test/1
> ]).
>
> -spec test(#{atom() => term()}) -> integer().
> test(Data) ->
> maps:fold(fun
> (_Key, Value, Acc) when is_integer(Value) ->
> Acc + Value;
> (_Key, _Value, Acc) ->
> Acc
> end, 0, Data).
>
>
> I don't know if this is the correct fix, but this makes dialyzer
> work again:
>
> diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl
> index 4215448..bb4c1c1 100644
> --- a/lib/hipe/cerl/erl_types.erl
> +++ b/lib/hipe/cerl/erl_types.erl
> @@ -4594,6 +4594,8 @@ t_form_to_string({type, _L, list, [Type]}) ->
> "[" ++ t_form_to_string(Type) ++ "]";
> t_form_to_string({type, _L, map, Args}) when not is_list(Args) ->
> "#{}";
> +t_form_to_string({type, _L, map_field_assoc, Key, Value}) ->
> + "#{" ++ t_form_to_string(Key) ++ "=>" ++
> t_form_to_string(Value) ++ "}";
> t_form_to_string({type, _L, mfa, []}) -> "mfa()";
> t_form_to_string({type, _L, module, []}) -> "module()";
> t_form_to_string({type, _L, node, []}) -> "node()";
>
> Thanks,
>
> Are
>
> On Tue, Apr 7, 2015 at 2:31 PM Björn-Egil Dahlberg
> <wallentin.dahlberg@REDACTED
> <mailto:wallentin.dahlberg@REDACTED>> wrote:
>
> Again - could you provide me with a sample code .. or at least
> some sort of a clue to what you are dialyzing?
>
> 2015-04-07 14:05 GMT+02:00 Ali Sabil <ali.sabil@REDACTED
> <mailto:ali.sabil@REDACTED>>:
>
> Hi again,Running dialyzer shipped with 17.5 on the same
> code base leads now to the following error (17.4 works
> without any errors):
>
>
>
>
> ===> Error in dialyzing apps: Analysis failed with error:
> {function_clause,[{erl_types,t_form_to_string,
> [{type,36,map_field_assoc,
> {type,36,atom,[]},
> {type,36,term,[]}}],
> [{file,"erl_types.erl"},{line,4546}]},
> {erl_types,t_form_to_string_list,2,
> [{file,"erl_types.erl"},{line,4637}]},
> {erl_types,t_form_to_string,1,
> [{file,"erl_types.erl"},{line,4634}]},
> {erl_types,t_form_to_string_list,2,
> [{file,"erl_types.erl"},{line,4637}]},
> {erl_types,t_form_to_string,1,
> [{file,"erl_types.erl"},{line,4634}]},
> {dialyzer_contracts,contract_to_string_1,1,
> [{file,"dialyzer_contracts.erl"},
> {line,107}]},
> {dialyzer_contracts,extra_contract_warning,6,
> [{file,"dialyzer_contracts.erl"},
> {line,712}]},
> {dialyzer_contracts,picky_contract_check,7,
> [{file,"dialyzer_contracts.erl"},
> {line,686}]}]}
> Last messages in the log cache:
> Reading files and computing callgraph... done in 1.21 secs
> Removing edges... done in 0.04 secs
>
>
> On Wed, Mar 18, 2015 at 12:12 PM Björn-Egil Dahlberg
> <egil@REDACTED <mailto:egil@REDACTED>> wrote:
>
> On 2015-03-18 12:01, Ali Sabil wrote:
> > I tried to create a minimal testcase but I
> unfortunately haven't been
> > able to. I was running dialyzer on a quite large
> code base and now
> > even the unpatched dialyzer works without any issue
> after I fixed all
> > the issues reported by dialyzer.Ah, well .. I
> suspect it was the missing clause in find_terminals
> and Ihad it on a TODO somewhere. Should be included to
> 17.5.// Björn-Egil
>
>
>
>
>
>
> _______________________________________________
> erlang-questions mailing listerlang-questions@REDACTED
> <mailto:erlang-questions@REDACTED>http://erlang.org/mailman/list
> <http://erlang.org/mailman/listinfo/erlang-questions>info/erlang-questions
> <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150430/6175ca48/attachment.htm>
More information about the erlang-questions
mailing list