| trait Foo {} | |
| trait Bar {} | |
| impl<T> Foo for T where T: Bar {} | |
| fn needs_foo(_: impl Foo) {} | |
| trait Mirror { | |
| type Mirror; | |
| } | |
| impl<T> Mirror for T { | |
| type Mirror = T; | |
| } | |
| // Make sure the `Alias: Foo` bound doesn't "shadow" the impl, since the | |
| // impl is really the only candidate we care about here for the purpose | |
| // of error reporting. | |
| fn hello<T>() where <T as Mirror>::Mirror: Foo { | |
| needs_foo(()); | |
| //~^ ERROR the trait bound `(): Foo` is not satisfied | |
| } | |
| fn main() {} |