re type spec problem (not recognizing { capture, none })

Paul Mineiro <>
Fri Jul 17 21:37:18 CEST 2009


the module documentation doesn't list { capture, none } as a possibility
in the types section (but refers to it in the function description),
so i perhaps this is not dialyzer's fault (GIGO?).

easy workaround: specify { capture, [] } instead of { capture, none }.

cheers,

-- p

-------
-module (diabug).
-export ([f/0]).

f () ->
  re:run ("yo", "yo", [ { capture, none } ]).
-------

% erl
Erlang (BEAM) emulator version 5.6.5 [source] [async-threads:0] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
1> c (diabug), diabug:f ().
match
2>
User switch command
 --> q
% dialyzer --src -c diabug.erl
  Checking whether the PLT /home/pmineiro/.dialyzer_plt is up-to-date... yes
  Proceeding with analysis...
diabug.erl:4: Function f/0 has no local return
diabug.erl:5: The call re:run("yo","yo",[{'capture','none'},...]) will never return since it differs in argument position 3 from the success typing arguments: (binary() | maybe_improper_list(binary() | maybe_improper_list(any(),binary() | []) | byte(),binary() | []),binary() | maybe_improper_list(binary() | maybe_improper_list(any(),binary() | []) | byte(),binary() | []) | {'re_pattern',integer(),integer(),binary()},[atom() | {'capture','all' | 'all_but_first' | 'first' | [atom() | string() | integer()]} | {'newline','anycrlf' | 'cr' | 'crlf' | 'lf'} | {'offset',integer()} | {'capture','all' | 'all_but_first' | 'first' | [atom() | string() | integer()],'binary' | 'index' | 'list'}])
 done in 0m0.22s
done (warnings were emitted)


More information about the erlang-bugs mailing list