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

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


Hello,

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

-module(binary_compile_dialyzer_issue).

-export([test/0]).

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

/usr/lib/erlang/lib/hipe-3.9.1/cerl/erl_bif_types.erl:4672
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