[erlang-bugs] Dialyzer crashes on empty map case pattern that can never match

James Fish <>
Mon Apr 28 00:00:24 CEST 2014


Dialyzer crashes when analysing a case clause with an empty map pattern
when it is known that the pattern can never match.

Minimal example:

function(Tuple) when is_tuple(Tuple) ->
    case Tuple of #{} -> ok end.

Result:

dialyzer: Analysis failed with error:
{{case_clause,#{}},
 [{cerl_prettypr,lay_literal,2,[{file,"cerl_prettypr.erl"},{line,468}]},
  {cerl_prettypr,lay_ann,2,[{file,"cerl_prettypr.erl"},{line,411}]},
  {cerl_prettypr,format,2,[{file,"cerl_prettypr.erl"},{line,271}]},
  {dialyzer_dataflow,format_patterns,1,
                     [{file,"dialyzer_dataflow.erl"},{line,3351}]},

{dialyzer_dataflow,do_clause,6,[{file,"dialyzer_dataflow.erl"},{line,1245}]},
  {dialyzer_dataflow,handle_clauses,9,
                     [{file,"dialyzer_dataflow.erl"},{line,1177}]},
  {dialyzer_dataflow,handle_case,3,
                     [{file,"dialyzer_dataflow.erl"},{line,936}]},
  {dialyzer_dataflow,do_clause,6,
                     [{file,"dialyzer_dataflow.erl"},{line,1372}]}]}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20140427/03612cfb/attachment.html>


More information about the erlang-bugs mailing list