Skip to content

dialyzer fails on OTP27 and OTP28 #958

@sg2342

Description

@sg2342

after erlang/otp@196e7cd (which added specs to systools:make_relup/4) code in:

relx/src/rlx_relup.erl

Lines 41 to 50 in b228c36

Options = [{outdir, OutDir},
{path, [filename:join([OutputDir, "*", "lib", "*", "ebin"])]},
{silent, true} | case WarningsAsErrors of
true -> [warnings_as_errors];
false -> []
end],
CurrentRel = strip_dot_rel(find_rel_file(Name, ToVsn, OutputDir)),
UpFromRel = strip_dot_rel(find_rel_file(Name, UpFromVsn, OutputDir)),
?log_debug("systools:make_relup(~p, ~p, ~p, ~p)", [CurrentRel, UpFromRel, UpFromRel, Options]),
case systools:make_relup(CurrentRel, [UpFromRel], [UpFromRel], [no_warn_sasl | Options]) of

causes dialyzer failures because {silent, true} and no_warn_sasl in the 4th argument of the call to systools:make_relup/4 violates the spec:

$ rebar3 dialyzer -i
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling relx
===> Dialyzer starting, this may take a while...
===> Running incremental analysis...
===> Resolving project files...
===> Resolving project warning files...

src/relx.erl
Line 130 Column 2: Invalid type specification for function relx:build_relup/4. The success typing is (_,_,_,_) -> none() but the spec is (rlx_release:name(),rlx_release:vsn(),rlx_release:vsn(),rlx_config:t() | rlx_state:t()) -> {'ok',rlx_state:t()} | {'error',term()}
Line 132 Column 1: Function build_relup/4 has no local return

src/rlx_relup.erl
Line 9 Column 2: Invalid type specification for function rlx_relup:do/4. The success typing is (_,_,_,_) -> none() but the spec is (atom(),string(),string() | 'undefined',rlx_state:t()) -> {'ok',rlx_state:t()} | relx:error()
Line 10 Column 1: Function do/4 has no local return
Line 37 Column 1: Function make_upfrom_script/4 has no local return
===> Warnings written to _build/default/28.1.dialyzer_warnings
===> Warnings occurred running dialyzer: 5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions