// run-pass #![feature(type_alias_impl_trait)] trait Foo { // This was reachable in https://github.com/rust-lang/rust/issues/100800 fn foo(&self) { unreachable!() } } impl Foo for T {} struct B; impl B { fn foo(&self) {} } type Input = impl Foo; fn run1(f: F, i: Input) {f(i)} fn run2(f: F, i: B) {f(i)} fn main() { run1(|x: B| {x.foo()}, B); run2(|x: B| {x.foo()}, B); }