[erlang-bugs] Spec or Dialyzer regression

Tuncer Ayaz <>
Tue May 15 21:50:30 CEST 2012


Tthere seems to be a spec or Dialyzer regression in otp master
revealed when dialyzing rebar.

Steps to reproduce:
$ git clone git://github.com/basho/rebar.git && cd rebar
# assuming ~/.dialzer_plt is for otp master
$ make check
# otherwise, use custom PLT
$ make debug && dialyzer --plt otp_master_plt ebin

You can ignore the extra warnings enabled via 'make check'. They make
no difference.

R15B01:
rebar_utils.erl:154: Call to missing or unexported function escript:foldl/3

R16 (OTP_R15B01-386-g77c47cd):

rebar_core.erl:440: The call rebar_core:apply_hook({_,{_,_}}) will
never return since it differs in the 1st argument from the success
typing arguments: ({_,{binary() | maybe_improper_list(binary() |
maybe_improper_list(any(),binary() | []) | non_neg_integer(),binary()
| []) | {'re_pattern',_,_,_},_,_}})
rebar_ct.erl:64: Function run_test/3 has no local return
rebar_ct.erl:91: Function check_log/1 will never be called
rebar_ct.erl:113: Function show_log/1 will never be called
rebar_deps.erl:287: Function require_source_engine/1 has no local
return
rebar_deps.erl:325: The pattern <Dep, 0> can never match the type
<#dep{},3>
rebar_deps.erl:355: Function download_source/2 will never be called
rebar_deps.erl:411: Function update_source/2 will never be called
rebar_deps.erl:443: Function source_engine_avail/1 has no local return
rebar_deps.erl:447: Function source_engine_avail/2 has no local return
rebar_deps.erl:450: The pattern 'true' can never match the type 'false'
rebar_deps.erl:464: Function will never be called
rebar_erlc_compiler.erl:272: Function compile_mib/3 has no local return
rebar_erlydtl_compiler.erl:128: The pattern 'false' can never match
the type 'true'
rebar_erlydtl_compiler.erl:162: Function referenced_dtls/2 has no
local return
rebar_erlydtl_compiler.erl:163: The call
rebar_erlydtl_compiler:referenced_dtls1([atom() | binary() | [atom() |
[any()] | char()],...],Config::any(),set()) will never return since it
differs in the 1st argument from the success typing arguments:
([],rebar_config:config(),set())
rebar_erlydtl_compiler.erl:167: Function referenced_dtls1/3 has no
local return
rebar_erlydtl_compiler.erl:175: The created fun has no local return
rebar_erlydtl_compiler.erl:175: Fun application with arguments
(Step::[atom() | binary() | [atom() | [any()] | char()],...]) will
never return since it differs in the 1st argument from the success
typing arguments: ([])
rebar_erlydtl_compiler.erl:175: The pattern [] can never match the
type [atom() | binary() | [atom() | [any()] | char()],...]
rebar_erlydtl_compiler.erl:186: Function will never be called
rebar_erlydtl_compiler.erl:187: Function will never be called
rebar_file_utils.erl:75: Function mv/2 has no local return
rebar_file_utils.erl:123: Function xcopy_win32/2 has no local return
rebar_neotoma_compiler.erl:88: The pattern 'false' can never match the
type 'true'
rebar_neotoma_compiler.erl:116: Function referenced_pegs/2 has no
local return
rebar_neotoma_compiler.erl:117: The call
rebar_neotoma_compiler:referenced_pegs1([atom() | binary() | [atom() |
[any()] | char()],...],Config::any(),set()) will never return since it
differs in the 1st argument from the success typing arguments:
([],rebar_config:config(),set())
rebar_neotoma_compiler.erl:121: Function referenced_pegs1/3 has no
local return
rebar_neotoma_compiler.erl:129: The created fun has no local return
rebar_neotoma_compiler.erl:129: Fun application with arguments
(Step::[atom() | binary() | [atom() | [any()] | char()],...]) will
never return since it differs in the 1st argument from the success
typing arguments: ([])
rebar_neotoma_compiler.erl:129: The pattern [] can never match the
type [atom() | binary() | [atom() | [any()] | char()],...]
rebar_neotoma_compiler.erl:140: Function will never be called
rebar_neotoma_compiler.erl:141: Function will never be called
rebar_utils.erl:93: Function sh/2 has no local return
rebar_utils.erl:154: Call to missing or unexported function
escript:foldl/3
rebar_utils.erl:442: Function vcs_vsn_invoke/2 has no local return


More information about the erlang-bugs mailing list