#![feature(impl_trait_in_assoc_type)] // build-pass (FIXME(62277): could be check-pass?) trait Bar {} struct Dummy(U); impl Bar for Dummy {} trait Foo { type Assoc: Bar; fn foo(t: T) -> Self::Assoc; } impl Foo for i32 { type Assoc = impl Bar; fn foo(w: W) -> Self::Assoc { Dummy(w) } } struct NonGeneric; impl Bar for NonGeneric {} impl Foo for u32 { type Assoc = impl Bar; fn foo(_: W) -> Self::Assoc { NonGeneric } } fn main() {}