| // There are two different instances to check that even if |
| // the trait is implemented for the output of a function, |
| // it will still be displayed if the function itself implements a trait. |
| trait Foo {} |
| |
| impl Foo for fn() -> bool {} |
| impl Foo for bool {} |
| |
| fn example() -> bool { |
| true |
| } |
| |
| trait NoOtherFoo {} |
| |
| impl NoOtherFoo for fn() -> bool {} |
| |
| fn do_on_foo(v: impl Foo) {} |
| fn do_on_single_foo(v: impl NoOtherFoo) {} |
| |
| fn main() { |
| do_on_foo(example); |
| //~^ ERROR the trait bound |
| |
| do_on_single_foo(example); |
| //~^ ERROR the trait bound |
| } |