| // The double space in `impl Iterator` is load bearing! We want to make sure we don't regress by |
| // accident if the internal string representation changes. |
| #[rustfmt::skip] |
| fn foo(constraints: impl Iterator) { |
| for constraint in constraints { |
| qux(constraint); |
| //~^ ERROR `<impl Iterator as Iterator>::Item` doesn't implement `Debug` |
| } |
| } |
| |
| fn bar<T>(t: T, constraints: impl Iterator) where T: std::fmt::Debug { |
| for constraint in constraints { |
| qux(t); |
| qux(constraint); |
| //~^ ERROR `<impl Iterator as Iterator>::Item` doesn't implement `Debug` |
| } |
| } |
| |
| fn baz(t: impl std::fmt::Debug, constraints: impl Iterator) { |
| for constraint in constraints { |
| qux(t); |
| qux(constraint); |
| //~^ ERROR `<impl Iterator as Iterator>::Item` doesn't implement `Debug` |
| } |
| } |
| |
| fn bat<I, T: std::fmt::Debug>(t: T, constraints: impl Iterator, _: I) { |
| for constraint in constraints { |
| qux(t); |
| qux(constraint); |
| //~^ ERROR `<impl Iterator as Iterator>::Item` doesn't implement `Debug` |
| } |
| } |
| |
| fn bak(constraints: impl Iterator + std::fmt::Debug) { |
| for constraint in constraints { |
| qux(constraint); |
| //~^ ERROR `<impl Iterator + std::fmt::Debug as Iterator>::Item` doesn't implement |
| } |
| } |
| |
| #[rustfmt::skip] |
| fn baw<>(constraints: impl Iterator) { |
| for constraint in constraints { |
| qux(constraint); |
| //~^ ERROR `<impl Iterator as Iterator>::Item` doesn't implement `Debug` |
| } |
| } |
| |
| fn qux(_: impl std::fmt::Debug) {} |
| |
| fn main() {} |