<p dir="ltr">Hi</p>
<p dir="ltr">I'm having an interesting issue with Dialyzer in R16B03-1</p>
<p dir="ltr">-module(barf).</p>
<p dir="ltr">-record(rec, {version}).</p>
<p dir="ltr">-opaque rec() :: #rec{version :: pos_integer()}.</p>
<p dir="ltr">-export_type([rec/0]).<br>
-export([a/1]).</p>
<p dir="ltr">a(#rec{version = 1} = A) -> A;<br>
a(A) when is_tuple(A) -> b(1, A).</p>
<p dir="ltr">b(_, {rec, 1} =Rec) -> Rec.</p>
<p dir="ltr">dialyzer --verbose --no_check_plt --no_native --plt mini_plt ~/slask/barf.erl</p>
<p dir="ltr">This will never terminate and there is 100% CPU load.</p>
<p dir="ltr">If I swap out opaque to type, it terminates or if I remove the pattern matching on Rec in b/2 it works.</p>
<p dir="ltr">Any ideas why this is?</p>
<p dir="ltr">Further more, Dialyzer can handle this in 17.3.</p>
<p dir="ltr">/Sam</p>