erlang/otp

[dialyzer] crash when a bitstring segment size is 'undefined' (in an expression)

RobinMorisset opened this issue · 0 comments

Describe the bug
Running dialyzer on the following:

f() ->
    <<0:(undefined)>>.

crashes it with

dialyzer: Analysis failed with error:
{{badmatch,"integer"},
 [{cerl,bitstr_bitsize,1,[{file,"cerl.erl"},{line,2396}]},
  {dialyzer_dataflow,handle_bitstr,3,
                     [{file,"dialyzer_dataflow.erl"},{line,779}]},
  {dialyzer_dataflow,traverse_list,4,
                     [{file,"dialyzer_dataflow.erl"},{line,293}]},
  {dialyzer_dataflow,traverse,3,[{file,"dialyzer_dataflow.erl"},{line,211}]},
  {dialyzer_dataflow,do_clause,7,[{file,"dialyzer_dataflow.erl"},{line,1276}]},
  {dialyzer_dataflow,handle_clauses,9,
                     [{file,"dialyzer_dataflow.erl"},{line,1199}]},
  {dialyzer_dataflow,handle_case,3,
                     [{file,"dialyzer_dataflow.erl"},{line,932}]},
  {dialyzer_dataflow,analyze_loop,1,
                     [{file,"dialyzer_dataflow.erl"},{line,186}]}]}

Affected versions
master

Additional context
The bug disappears if I replace undefined by another atom.
This seems related to #7138 that was fixed in #7160.