//@ known-bug: #139120 pub trait Foo { type Bar<'a>; } pub struct FooImpl {} impl Foo for FooImpl { type Bar<'a> = (); } pub trait FooFn { fn bar(&self); } impl FooFn for fn(T, T::Bar<'_>) { fn bar(&self) {} } fn foo(f: fn(T, T::Bar<'_>)) { let _: &dyn FooFn = &f; } fn main() { foo(|_: FooImpl, _| {}); }