//@ known-bug: #123141 trait Trait { fn next(self) -> Self::Item; type Item; } struct Foo(T); impl Trait for Foo { type Item = Foo; fn next(self) -> Self::Item { loop {} } } fn opaque() -> impl Trait { Foo::<_>(10_u32) } fn main() { opaque().next(); }