Open metelik opened 3 years ago
Elixir & Erlang/OTP versions (elixir --version): Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe] Elixir 1.10.4 (compiled with Erlang/OTP 23)
Which version of Dialyxir are you using? (cat mix.lock | grep dialyxir): "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"},
[{:"(", 1}, {:"#", 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'a'}, {:atom_part, 1, 'd'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 'u'}, {:atompart, 1, 's'}, {:, 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'e'}, {:atom_part, 1, 'q'}, {:atom_part, 1, 'u'}, {:atom_part, 1, 'e'}, {:atom_part, 1, 's'}, {:atom_part, 1, 't'}, {:"{", 1}, {:"}", 1}, {:",", 1}, {:atom_part, 1, 'a'}, {:atom_part, 1, 't'}, {:atom_part, 1, 't'}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 'b'}, {:atom_part, 1, 'u'}, {:atom_part, 1, 't'}, {:atompart, 1, 'e'}, {:, 1}, {:atom_part, 1, 'l'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 's'}, {:atom_part, 1, 't'}, {:"(", 1}, {:")", 1}, {:")", 1}, {:->, 1}, {:"#", 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'a'}, {:atom_part, 1, 'd'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 'u'}, {:atompart, 1, 's'}, {:, 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'e'}, {:atom_part, 1, ...}, {:atom_part, ...}, {...}, ...]
mix dialyzer --format raw : {:warn_failing_call, {'lib/network_manager/radius.ex', 99}, {:call, [:eradius_lib, :set_attributes, '({\'radiusrequest\', 0, \'request\', [], \'undefined\', \'undefined\', \'false\', <<>>},[{1 | 2,},...])', [1], :both, '({\'radius_request\',byte(),\'accept\' | \'accreq\' | \'accresp\' | \'challenge\' | \'coaack\' | \'coanak\' | \'coareq\' | \'discack\' | \'discnak\' | \'discreq\' | \'reject\' | \'request\',[{posinteger() | {,} | {,,,,},}],binary(),<<:128>>,boolean(),binary()},[{pos_integer() | {pos_integer(),pos_integer()} | {\'attribute\',posinteger() | {,},\'abinary\' | \'binary\' | \'date\' | \'integer\' | \'integer64\' | \'ipaddr\' | \'ipv6addr\' | \'ipv6prefix\' | \'octets\' | \'string\' | {,_},[any()],\'ascend\' | \'no\' | \'saltcrypt\' | \'scramble\'},}])', '{\'radius_request\',byte(),\'accept\' | \'accreq\' | \'accresp\' | \'challenge\' | \'coaack\' | \'coanak\' | \'coareq\' | \'discack\' | \'discnak\' | \'discreq\' | \'reject\' | \'request\',[{posinteger() | {,} | {,,,,},}],binary(),<<:128>>,boolean(),binary()}', {true, '(#radius_request{},attribute_list()) -> #radius_request{}'}]}}
I think the dialyxir misses the warn_failing_call parsing: x@ubuntu:/home/src/agilis_fw/common_core.x86.radius$ mix dialyzer.explain warn_failing_call (...) Unknown warning named: warn_failing_call
It would be nifty to have it parsed and displayed neatly.
The easiest way to reproduce is to use the following example: https://github.com/xerions/exradius/blob/master/lib/sample.ex
Environment
Elixir & Erlang/OTP versions (elixir --version): Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe] Elixir 1.10.4 (compiled with Erlang/OTP 23)
Which version of Dialyxir are you using? (cat mix.lock | grep dialyxir): "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"},
Current behavior
[{:"(", 1}, {:"#", 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'a'}, {:atom_part, 1, 'd'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 'u'}, {:atompart, 1, 's'}, {:, 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'e'}, {:atom_part, 1, 'q'}, {:atom_part, 1, 'u'}, {:atom_part, 1, 'e'}, {:atom_part, 1, 's'}, {:atom_part, 1, 't'}, {:"{", 1}, {:"}", 1}, {:",", 1}, {:atom_part, 1, 'a'}, {:atom_part, 1, 't'}, {:atom_part, 1, 't'}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 'b'}, {:atom_part, 1, 'u'}, {:atom_part, 1, 't'}, {:atompart, 1, 'e'}, {:, 1}, {:atom_part, 1, 'l'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 's'}, {:atom_part, 1, 't'}, {:"(", 1}, {:")", 1}, {:")", 1}, {:->, 1}, {:"#", 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'a'}, {:atom_part, 1, 'd'}, {:atom_part, 1, 'i'}, {:atom_part, 1, 'u'}, {:atompart, 1, 's'}, {:, 1}, {:atom_part, 1, 'r'}, {:atom_part, 1, 'e'}, {:atom_part, 1, ...}, {:atom_part, ...}, {...}, ...]
mix dialyzer --format raw : {:warn_failing_call, {'lib/network_manager/radius.ex', 99}, {:call, [:eradius_lib, :set_attributes, '({\'radiusrequest\', 0, \'request\', [], \'undefined\', \'undefined\', \'false\', <<>>},[{1 | 2,},...])', [1], :both, '({\'radius_request\',byte(),\'accept\' | \'accreq\' | \'accresp\' | \'challenge\' | \'coaack\' | \'coanak\' | \'coareq\' | \'discack\' | \'discnak\' | \'discreq\' | \'reject\' | \'request\',[{posinteger() | {,} | {,,,,},}],binary(),<<:128>>,boolean(),binary()},[{pos_integer() | {pos_integer(),pos_integer()} | {\'attribute\',posinteger() | {,},\'abinary\' | \'binary\' | \'date\' | \'integer\' | \'integer64\' | \'ipaddr\' | \'ipv6addr\' | \'ipv6prefix\' | \'octets\' | \'string\' | {,_},[any()],\'ascend\' | \'no\' | \'saltcrypt\' | \'scramble\'},}])', '{\'radius_request\',byte(),\'accept\' | \'accreq\' | \'accresp\' | \'challenge\' | \'coaack\' | \'coanak\' | \'coareq\' | \'discack\' | \'discnak\' | \'discreq\' | \'reject\' | \'request\',[{posinteger() | {,} | {,,,,},}],binary(),<<:128>>,boolean(),binary()}', {true, '(#radius_request{},attribute_list()) -> #radius_request{}'}]}}
Expected behavior
I think the dialyxir misses the warn_failing_call parsing: x@ubuntu:/home/src/agilis_fw/common_core.x86.radius$ mix dialyzer.explain warn_failing_call (...) Unknown warning named: warn_failing_call
It would be nifty to have it parsed and displayed neatly.