Skip to content

Dialyzer fails with Erlang/OTP 28 #52

@badlop

Description

@badlop

fast_xml uses functions from the erl_types module from Erlang/OTP. In Erlang 28, this module got changes, and now dialyzer fails:

$ rebar3 dialyzer
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling fast_xml
===> Dialyzer starting, this may take a while...
===> Updating plt...
===> Resolving project files...
===> Updating base plt...
===> Resolving base files...
===> Checking 222 files in /home/bernar/.cache/rebar3/rebar3_28.0_plt...
===> Copying /home/bernar/.cache/rebar3/rebar3_28.0_plt to /home/bernar/e/git/librerias/fast_xml/_build/default/rebar3_28.0_plt...
===> Checking 222 files in _build/default/rebar3_28.0_plt...
===> Adding 113 files to _build/default/rebar3_28.0_plt...
===> Doing success typing analysis...
===> Resolving project warning files...
===> Analyzing 9 files with _build/default/rebar3_28.0_plt...

src/fxml_gen.erl

Line 3110 Column 57: The pattern {'type', _, 'list', [T]}
 can never match the type
 (erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}})

Line 3112 Column 57: The pattern {'remote_type', _, [{'atom', _, 'erlang'}, {'atom', _, 'timestamp'}, []]}
 can never match the type
 (erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}})

Line 3119 Column 57: The pattern {'remote_type', _, [{'atom', _, 'inet'}, {'atom', _, 'ip_address'}, []]}
 can never match the type
 (erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}})

Line 3123 Column 57: The pattern {'remote_type', _, [{'atom', _, 'jid'}, {'atom', _, 'jid'}, []]}
 can never match the type
 (erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}})

Line 3127 Column 57: The pattern {'type', _, 'union', _}
 can never match the type
 (erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}})

Line 3686 Column 22: Guard test 'c' == 'remote_type' can never succeed

Line 4216 Column 15: The call erl_types:t_from_form(Spec::any(), sets:set(_), {'type', {'mod', 'foo', 1}, "mod.erl"}, atom() | ets:tid(), #{}, erl_types:cache())
 will never return since the success typing is
 ({'ann_type' | 'atom' | 'char' | 'integer' | 'remote_type' | 'var',erl_anno:anno(),atom() | [any()] | non_neg_integer()} | {'op',erl_anno:anno(),'+' | '-' | 'bnot' | 'not',_} | {'type',erl_anno:anno(),atom(),'any' | [any()]} | {'user_type',erl_anno:anno(),atom(),[any()]} | {'op',erl_anno:anno(),atom(),_,_}, 'replace_by_none' | ets:tid(), {'record',{atom(),atom(),byte()},string()} | {'spec',{atom(),atom(),byte()},string()} | {'type',{atom(),atom(),byte()},string()}, 'undefined' | ets:tid(), #{atom() | integer()=>(erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}})}, erl_types:cache()) -> {(erl_types:erl_type() :: 'any' | 'none' | 'opaque' | 'unit' | {'c',atom(),_,'float' | 'integer' | 'nonempty' | 'pid' | 'port' | 'reference' | 'unknown' | {_,_}}),erl_types:cache()}
 and the contract is (parse_form(), exported_type_table(), site(), mod_type_table(), var_table(), cache()) -> {erl_type(),cache()}

Line 4225 Column 11: Call to missing or unexported function erl_types:t_opaque_from_records/1

===> Warnings written to _build/default/28.0.dialyzer_warnings
===> Warnings occurred running dialyzer: 8

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions