Dialyzer: Cons will produce an improper list since its 2nd argument is none()
Jesper Eskilson
jesper.eskilson@REDACTED
Fri Feb 14 13:44:38 CET 2020
Hi,
When dialyzer analyzes this program:
-module(foo).
-export([main/0]).
-record(foo, {x :: integer()}).
main() ->
[ #foo{x = 0},
#foo{x = false} ].
it says:
foo.erl:7: Function main/0 has no local return
foo.erl:8: Cons will produce an improper list since its 2nd argument is
none()
foo.erl:9: Record construction
#foo{x :: false} violates the declared type of field x ::
integer()
It seems like dialyzer assumes that any cons with second argument not being
a list will produce an improper list, but shouldn't it treat "none()"
differently?
Is this a bug in dialyzer, or a feature whose usefulness I am unable to
grasp?
--
*Jesper Eskilson*
Senior Software Engineer
Kred Core
+46-72-855-8421
Klarna Bank AB (publ)
Sveavägen 46, 111 34 Stockholm
Tel: +46 8 120 120 00 <+46812012000>
Reg no: 556737-0431
klarna.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20200214/bd0c5623/attachment.htm>
More information about the erlang-questions
mailing list