lists:concat/1 spec inconsistent with implementation or bug in Dialyzer?

Rickard Olsson <>
Wed Jul 21 18:10:26 CEST 2010


Hi,

When running Dialyzer on the code below I get the following messages: "The
call lists:concat([['a,...],...]) breaks the contract ([concat_thing()]) ->
string()" and "Function unused_function/1 will never be called"

Test code:

-export([parse/0]).

parse()->
    concat(),
    unused_function(a).

concat() ->
    lists:concat([[a]]).

unused_function(A) ->
    A.

The line: "lists:concat([[a]])." runs fine in the shell, but seems to cause
the dialyzer to stop, which I assume is the reason it warns that
unused_function/1 will never be used, even though it is used. If the arity
is changed to 0 and the arguments removed from the call, the warning seems
to disapear though.

Is it a bug in the lists:concat/1's spec or in Dialyzer?

Running:
openSUSE 11.0 (X86-64)
Erlang R14A (erts-5.8) [source] [64-bit]
Dialyzer v2.3.0

Regards,
Rickard Olsson
Erlang Solutions


More information about the erlang-bugs mailing list