]> git.lizzy.rs Git - rust.git/blob - tests/ui/iterators/into-iterator-type-inference-shift.rs
Rollup merge of #106661 - mjguzik:linux_statx, r=Mark-Simulacrum
[rust.git] / tests / ui / iterators / into-iterator-type-inference-shift.rs
1 // run-pass
2 #![allow(unused_must_use)]
3 #![allow(dead_code)]
4 #![allow(unused_mut)]
5 #![allow(unused_variables)]
6 // Regression test for type inference failure around shifting. In this
7 // case, the iteration yields an isize, but we hadn't run the full type
8 // propagation yet, and so we just saw a type variable, yielding an
9 // error.
10
11 // pretty-expanded FIXME #23616
12
13 trait IntoIterator {
14     type Iter: Iterator;
15
16     fn into_iter(self) -> Self::Iter;
17 }
18
19 impl<I> IntoIterator for I where I: Iterator {
20     type Iter = I;
21
22     fn into_iter(self) -> I {
23         self
24     }
25 }
26
27 fn desugared_for_loop_bad(byte: u8) -> u8 {
28     let mut result = 0;
29     let mut x = IntoIterator::into_iter(0..8);
30     let mut y = Iterator::next(&mut x);
31     let mut z = y.unwrap();
32     byte >> z;
33     1
34 }
35
36 fn main() {}