[erlang-bugs] dialyzer: false function has no local return warning in R14B?
Kostis Sagonas
kostis@REDACTED
Thu Nov 4 23:22:12 CET 2010
Klas Johansson wrote:
> Hi,
>
> I get a warning from dialyzer when using ets:select (test case
> attached), but it seems like a false warning. The fact that the key
> (#r.k) is a tuple rather than an atom seems important - there's no
> warning if it's an atom.
>
> This is on R14B (as well as earlier versions).
>
> Any ideas?
You are sort of right that this is related to the declaration of #r{}
and its fields. But this is not a dialyzer bug!
Instead, it's a bug in the ms_transform parse transformation which is
not aware of type declarations in records and messes up things.
To verify that this is the case either comment out the line:
-include_lib("stdlib/include/ms_transform.hrl").
which enables the parse transform, or simply take out the type
declaration from the record. Dialyzer will then like your module :-)
I am leaving this to the person responsible for the ms parse transform
to fix.
Kostis
More information about the erlang-bugs
mailing list