[erlang-questions] Wrong advertised spec of lists:append/2
ノートン ジョーセフ ウェイ ン
norton@REDACTED
Fri Mar 29 02:49:40 CET 2013
Interesting.
I would have expected the spec written in the lists module to have triggered a warning message.
By adding any one of these specs, dialyzer does produce the desired warning message.
-module(foo).
-export([bar/2, baz/0]).
%%-spec bar(list(), list()) -> list().
%%-spec bar(list(term()), list(term())) -> list(term()).
%%-spec bar([term()], [term()]) -> [term()].
bar(A, B) ->
lists:append(A, B).
baz() ->
bar([], a).
dialyzer --plt ~/.dialyzer_plt.R16B ebin/foo.beam
Checking whether the PLT ~/.dialyzer_plt.R16B is up-to-date... yes
Proceeding with analysis...
foo.erl:10: Function baz/0 has no local return
foo.erl:11: The call foo:bar([],'a') breaks the contract ([term()],[term()]) -> [term()]
done in 0m6.70s
done (warnings were emitted)
On Mar 29, 2013, at 24:04 , Pierre Fenoll <pierrefenoll@REDACTED> wrote:
> Dialyzer says it passed successfully.
>
> On 28 March 2013 15:38, Joseph Wayne Norton <norton@REDACTED> wrote:
>
> Pierre -
>
> Just in case ... have you tried running Dialyzer on your program? If so, what does Dialyzer report?
>
> regards,
>
> Joe N.
>
> On Mar 28, 2013, at 11:12 PM, Pierre Fenoll <pierrefenoll@REDACTED> wrote:
>
> > > It's not a contradiction, as kostis noted specs are not complete
> > > enumerations of all possible argument types.
> >
> > Well, lists:append/2 asks for a list() as a second argument. Shouldn't
> > it badarg when I give it 'a', as in lists:append([], a) ?
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130329/56c27fc4/attachment.htm>
More information about the erlang-questions
mailing list