| // A variant of traits-issue-23003 in which an infinite series of | |
| // types are required. This test now just compiles fine, since the | |
| // relevant rules that triggered the overflow were removed. | |
| //@ check-pass | |
| #![allow(dead_code)] | |
| use std::marker::PhantomData; | |
| trait Async { | |
| type Cancel; | |
| } | |
| struct Receipt<A:Async> { | |
| marker: PhantomData<A>, | |
| } | |
| struct Complete<B> { | |
| core: Option<B>, | |
| } | |
| impl<B> Async for Complete<B> { | |
| type Cancel = Receipt<Complete<Option<B>>>; | |
| } | |
| fn foo(_: Receipt<Complete<()>>) { } | |
| fn main() { } |