// 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 `::Item` doesn't implement `Debug` } } fn bar(t: T, constraints: impl Iterator) where T: std::fmt::Debug { for constraint in constraints { qux(t); qux(constraint); //~^ ERROR `::Item` doesn't implement `Debug` } } fn baz(t: impl std::fmt::Debug, constraints: impl Iterator) { for constraint in constraints { qux(t); qux(constraint); //~^ ERROR `::Item` doesn't implement `Debug` } } fn bat(t: T, constraints: impl Iterator, _: I) { for constraint in constraints { qux(t); qux(constraint); //~^ ERROR `::Item` doesn't implement `Debug` } } fn bak(constraints: impl Iterator + std::fmt::Debug) { for constraint in constraints { qux(constraint); //~^ ERROR `::Item` doesn't implement } } #[rustfmt::skip] fn baw<>(constraints: impl Iterator) { for constraint in constraints { qux(constraint); //~^ ERROR `::Item` doesn't implement `Debug` } } fn qux(_: impl std::fmt::Debug) {} fn main() {}