[erlang-questions] Why does Dialyzer crash on this map?
Ivan Uemlianin
ivan@REDACTED
Tue Nov 25 18:20:12 CET 2014
Dear All
Quick update:
Just tried this at home on my Mac, and Dialyzer Dialyzes ltu.erl with no
problem.
The work machine that displayed the error below is a FreeBSD machine.
Both machines run the same version of Dialyzer (2.7.2); both obvs have a
17.x erlang but the BSD might be a bit older.
Have any minor bugs in Dialyzer been ironed out recently?
Thanks
Ivan
On 25/11/2014 15:13, Ivan Uemlianin wrote:
> Dear All
>
> Running Dialyzer on the module below crashes Dialyzer with the error
> following:
>
> ** module
>
> -module(ltu).
> -export([get_map/0]).
>
> -spec get_map() -> map().
> get_map() ->
> #{labels => [one, two],
> number => 27,
> [1,2,3] => wer, %% ok
> {4,5,6} => sdf, %% ok
> kvok => #{
> a => qwe,
> 2 => asd,
> [1,2,3] => wer, %% bad
> {4,5,6} => sdf, %% bad
> "abc" => zxc
> }
> }.
>
> ** crash
>
> $ dialyzer ltu.erl
> Checking whether the PLT /home/ivan/.dialyzer_plt is
> up-to-date... yes
> Proceeding with analysis...
> =ERROR REPORT==== 25-Nov-2014::14:52:50 ===
> Error in process <0.45.0> with exit value:
> {{case_clause,map},[{dialyzer_dataflow,find_terminals,1,[{file,"dialyzer_dataflow.erl"},{line,3451}]},{dialyzer_dataflow,find_terminals_list,3,[{file,"dialyzer_dataflow.erl"},{line,3504}]},{dialyzer_dataflow,classify_returns...
>
>
>
> dialyzer: Analysis failed with error:
> {{case_clause,map},
> [{dialyzer_dataflow,find_terminals,1,
> [{file,"dialyzer_dataflow.erl"},{line,3451}]},
> {dialyzer_dataflow,find_terminals_list,3,
> [{file,"dialyzer_dataflow.erl"},{line,3504}]},
> {dialyzer_dataflow,classify_returns,1,
> [{file,"dialyzer_dataflow.erl"},{line,3443}]},
> {dialyzer_dataflow,'-state__get_warnings/2-fun-0-',7,
> [{file,"dialyzer_dataflow.erl"},{line,2908}]},
> {lists,foldl,3,[{file,"lists.erl"},{line,1261}]},
> {dialyzer_dataflow,state__get_warnings,2,
> [{file,"dialyzer_dataflow.erl"},{line,2934}]},
> {dialyzer_dataflow,get_warnings,5,
> [{file,"dialyzer_dataflow.erl"},{line,142}]},
> {dialyzer_succ_typings,collect_warnings,2,
> [{file,"dialyzer_succ_typings.erl"},{line,182}]}]}
> Last messages in the log cache:
> Reading files and computing callgraph... done in 0.07 secs
> Removing edges... done in 0.00 secs
>
> If I comment out the two lines marked "%% bad", Dialyzer can check the
> module. nb the same key-value pairs that are bad in the nested map
> kvok, are ok in the top-level map.
>
> Is this supposed to happen? If so, why?
>
> With thanks and best wishes
>
> Ivan
>
>
--
============================================================
Ivan A. Uemlianin PhD
Llaisdy
Speech Technology Research and Development
ivan@REDACTED
@llaisdy
llaisdy.wordpress.com
github.com/llaisdy
www.linkedin.com/in/ivanuemlianin
festina lente
============================================================
More information about the erlang-questions
mailing list