Normalizes-to for a trait-bound-only param
compiler-errors opened this issue · 1 comments
compiler-errors commented
fn next<T: Iterator<Item = U>, U>(t: &mut T) -> Option<U> {
t.next()
}
fn foo<T: Iterator>(t: &mut T) {
let _: Option<T::Item> = next(t);
}
fn main() {}The below is a normalizes-to pred. In the body of foo, <T as Iterator>::Item normalizes-to <T as Iterator>::Item is false.
error[E0271]: type mismatch resolving `<T as Iterator>::Item == <T as Iterator>::Item`
--> <source>:6:35
|
6 | let _: Option<T::Item> = next(t);
| ---- ^ types differ
| |
| required by a bound introduced by this call
|
note: required by a bound in `next`
--> <source>:1:21
|
1 | fn next<T: Iterator<Item = U>, U>(t: &mut T) -> Option<U> {
| ^^^^^^^^ required by this bound in `next`
error: aborting due to previous error
compiler-errors commented
Can't transfer this to the new repo since github doesn't allow transferring issues across owners apparently.