// check-pass // compile-flags: -Znext-solver // See https://github.com/rust-lang/trait-system-refactor-initiative/issues/1, // a minimization of a pattern in core. trait Iterator { type Item; } struct Flatten(I); impl Iterator for Flatten where I: Iterator, { type Item = U; } fn needs_iterator() {} fn environment() where J: Iterator, { needs_iterator::>(); } fn main() {}