<div>Fresh build from Racket git MASTER, the following causes DRRacket&#39;s Check Syntax to loop without termination.</div><div><br></div><div>#lang typed/racket/base</div><div><br></div><div>(provide f)</div><div> </div>
<div>(struct: (T) S1 ([x : (Listof String)]))</div><div><br></div><div>(struct: (T) S2 ([x : S0]</div><div>                 [g : (T -&gt; Boolean)]))</div><div><br></div><div>(define-type (S0 T) (U (S1 T) (S2 T)))</div><div>
<br></div><div>(: f (String -&gt; (S0 String)))</div><div>(define (f x)</div><div>  (S1 &#39;()))</div>