[erlang-questions] Dialyzer warning: variable can never match since previous clauses completely covered the type

David Sveningsson <>
Thu Mar 26 09:26:16 CET 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tobias Lindahl wrote:
> David Sveningsson wrote:
>> Lets say that foo looks like this:
>>
>> - -spec foo() -> ok | {error, atom()}.
>> foo() ->
>>     ok.
>>
>> I get the same error. It is true that the function will only return ok,
>> but I would like to reserve that it may return {error, atom()} in the
>> future. It that possible?
> 
> To add the spec and have Dialyzer accept it: Yes.
> To make Dialyzer be quiet about the dead code: No.
> 
> Dialyzer uses both the spec and the type it finds in the analysis. It
> finds that your function returns 'ok', which is ok since it does not
> contradict your spec.
> 
> However, it will not widen the return type to the one in the spec, but
> use the more precise type that it has found in the analysis.
> 
> A -spec can never make your types less precise.
> 
> Tobias

Ok, thanks.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknLPCgACgkQ6pa1H/H5pqWNlwCgnvSZaNGfJZyTQ7PxbFLlMrji
cvsAn1/XruMU5S9T0ciItTKkRVQE4LZ3
=UMPO
-----END PGP SIGNATURE-----



More information about the erlang-questions mailing list