//@ known-bug: #139659 | |
//@compile-flags: -Cdebuginfo=2 -Copt-level=0 --crate-type lib | |
trait Trait { | |
type Output; | |
} | |
impl<O, F: Fn() -> O> Trait for F { | |
type Output = O; | |
} | |
struct Wrap<P>(P); | |
struct WrapOutput<O>(O); | |
impl<P: Trait> Trait for Wrap<P> { | |
type Output = WrapOutput<P::Output>; | |
} | |
fn wrap<P: Trait>(x: P) -> impl Trait { | |
Wrap(x) | |
} | |
fn consume<P: Trait>(_: P) -> P::Output { | |
unimplemented!() | |
} | |
pub fn recurse() -> impl Sized { | |
consume(wrap(recurse)) | |
} | |
pub fn main() {} |