2 // Test stack overflow triggered by evaluating the implications. To be
3 // WF, the type `Receipt<Complete>` would require that `<Complete as
4 // Async>::Cancel` be WF. This normalizes to `Receipt<Complete>`
5 // again, leading to an infinite cycle. Issue #23003.
7 // pretty-expanded FIXME #23616
10 #![allow(unused_variables)]
12 use std::marker::PhantomData;
18 struct Receipt<A:Async> {
19 marker: PhantomData<A>,
26 impl Async for Complete {
27 type Cancel = Receipt<Complete>;
30 fn foo(r: Receipt<Complete>) { }