[erlang-questions] Dialyzer and List Type
Kostis Sagonas
kostis@REDACTED
Tue Apr 19 10:06:21 CEST 2016
On 04/19/2016 08:50 AM, PhayTsukiming wrote:
>
> Then apply dialyzer to this module and dialyzer warns:
>
> t.erl:8: Invalid type specification for function t:bar/1. The success
> typing is ([integer()]) -> [integer()]
>
> But if I change the specification of bar to:
>
> -spec bar([atom()])->[integer()].
>
> dialyzer will show no warnings. My intention is to make sure the
> argument of bar is the same type of list as the argument of foo.
OK, but then why don't you put the same spec there? Is there any
problem in this case?
> Is this normal? Do I miss or misunderstand something about success
> typing or dialyzer?
Yes, you do. All that dialyzer ever promised is that when it spits a
warning then this warning is correct. (This is the "Dialyzer is never
wrong" slogan.)
On the other hand, it never promised to produce warnings in all cases
you may expect it to do so.
Kostis
More information about the erlang-questions
mailing list