<div dir="ltr">I found some oddity in how Dialyzer is not reporting spec violations when I use a parameterized type that is defined as record. Simple example:<div><br></div><div><font face="monospace">-record(my_record, {my_field, <..>}).</font></div><div><font face="monospace">-define(VAL_1, 1).</font></div><div><font face="monospace">-define(VAL_2, 2).</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">-type my_rec(FieldType) :: #my_record{my_field :: FieldType}.</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">test() -></font></div><div><font face="monospace">  takes_subtype1(#my_record{my_field = ?VAL_2}).</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">-spec takes_subtype1(my_rec(?VAL_1)) -> ok.</font></div><div><font face="monospace">takes_subtype1(Rec) -></font></div><div><font face="monospace">  gen_server:call(..., Rec).</font></div><div><br></div><div>but it would report similar scenario when I use, eg, tagged tuples:</div><div><br></div><div><font face="monospace">-type my_rec(FieldType) :: {my_record, FieldType}.<br><br>test() -><br> takes_subtype1({my_record, ?VAL_2}).</font><br></div><div><br></div><div>Here is the complete gist with more examples: <a href="https://gist.github.com/seriyps/d4daa42185ba2ce2e319184199cd4039">https://gist.github.com/seriyps/d4daa42185ba2ce2e319184199cd4039</a></div><div><br></div><div>Can someone explain what kind of "feature" is this? Should it be considered as a bug in Dialyzer? O I miss something?</div><div><br></div><div>Regards,</div><div>Sergey</div></div>