fast_xml icon indicating copy to clipboard operation
fast_xml copied to clipboard

Dialyzer fails with Erlang/OTP 28

Open badlop opened this issue 7 months ago • 0 comments

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

badlop avatar May 27 '25 13:05 badlop