[erlang-bugs] binary:compile_pattern/1 spec doesn't match binary:cp() opaque definition

Hynek Vychodil <>
Fri May 4 14:09:38 CEST 2012


binary:compile_pattern/1 spec makes dialyzer unhappy. This minimal
module shows it.



test() ->
  binary:split(<<>>, binary:compile_pattern(<<>>), []).

Dialyzer output is

$ dialyzer -q binary_compile_dialyzer_issue.erl

binary_compile_dialyzer_issue.erl:5: Function test/0 has no local return
binary_compile_dialyzer_issue.erl:6: The call
binary:split(#{}#,{'ac',binary()} | {'bm',binary()},[]) does not have
a term of type binary() | [binary()] | binary:cp() (with opaque
subterms) as 2nd argument

If I understand it right

t_binary_compiled_pattern() ->
  t_tuple([t_sup(t_atom('bm'), t_atom('ac')), t_binary()]).

should return opaque type. Unfortunately I seems not skilled enough to
provide patch.

Best regards

--Hynek (Pichi) Vychodil

Analyze your data in minutes. Share your insights instantly. Thrill
your boss.  Be a data hero!
Try GoodData now for free: www.gooddata.com

More information about the erlang-bugs mailing list