]> git.lizzy.rs Git - rust.git/blob - tests/ui/needless_range_loop.rs
Auto merge of #4029 - phansch:update_pulldown_cmark, r=oli-obk
[rust.git] / tests / ui / needless_range_loop.rs
1 #![allow(clippy::cognitive_complexity)]
2
3 static STATIC: [usize; 4] = [0, 1, 8, 16];
4 const CONST: [usize; 4] = [0, 1, 8, 16];
5
6 fn calc_idx(i: usize) -> usize {
7     (i + i + 20) % 4
8 }
9
10 fn main() {
11     const MAX_LEN: usize = 42;
12
13     let ns = vec![2, 3, 5, 7];
14
15     for i in 3..10 {
16         println!("{}", ns[i]);
17     }
18
19     for i in 3..10 {
20         println!("{}", ns[i % 4]);
21     }
22
23     for i in 3..10 {
24         println!("{}", ns[i % ns.len()]);
25     }
26
27     for i in 3..10 {
28         println!("{}", ns[calc_idx(i)]);
29     }
30
31     for i in 3..10 {
32         println!("{}", ns[calc_idx(i) % 4]);
33     }
34
35     let mut ms = vec![1, 2, 3, 4, 5, 6];
36     for i in 0..ms.len() {
37         ms[i] *= 2;
38     }
39     assert_eq!(ms, vec![2, 4, 6, 8, 10, 12]);
40
41     let mut ms = vec![1, 2, 3, 4, 5, 6];
42     for i in 0..ms.len() {
43         let x = &mut ms[i];
44         *x *= 2;
45     }
46     assert_eq!(ms, vec![2, 4, 6, 8, 10, 12]);
47
48     let g = vec![1, 2, 3, 4, 5, 6];
49     let glen = g.len();
50     for i in 0..glen {
51         let x: u32 = g[i + 1..].iter().sum();
52         println!("{}", g[i] + x);
53     }
54     assert_eq!(g, vec![20, 18, 15, 11, 6, 0]);
55
56     let mut g = vec![1, 2, 3, 4, 5, 6];
57     let glen = g.len();
58     for i in 0..glen {
59         g[i] = g[i + 1..].iter().sum();
60     }
61     assert_eq!(g, vec![20, 18, 15, 11, 6, 0]);
62
63     let x = 5;
64     let mut vec = vec![0; 9];
65
66     for i in x..x + 4 {
67         vec[i] += 1;
68     }
69
70     let x = 5;
71     let mut vec = vec![0; 10];
72
73     for i in x..=x + 4 {
74         vec[i] += 1;
75     }
76
77     let arr = [1, 2, 3];
78
79     for i in 0..3 {
80         println!("{}", arr[i]);
81     }
82
83     for i in 0..2 {
84         println!("{}", arr[i]);
85     }
86
87     for i in 1..3 {
88         println!("{}", arr[i]);
89     }
90
91     let mut vec = vec![1, 2, 3, 4];
92     let vec2 = vec![1, 2, 3, 4];
93     for i in 0..vec.len() {
94         println!("{}", vec[i]);
95     }
96
97     for i in 0..vec.len() {
98         let i = 42; // make a different `i`
99         println!("{}", vec[i]); // ok, not the `i` of the for-loop
100     }
101
102     for i in 0..vec.len() {
103         let _ = vec[i];
104     }
105
106     // ICE #746
107     for j in 0..4 {
108         println!("{:?}", STATIC[j]);
109     }
110
111     for j in 0..4 {
112         println!("{:?}", CONST[j]);
113     }
114
115     for i in 0..vec.len() {
116         println!("{} {}", vec[i], i);
117     }
118     for i in 0..vec.len() {
119         // not an error, indexing more than one variable
120         println!("{} {}", vec[i], vec2[i]);
121     }
122
123     for i in 0..vec.len() {
124         println!("{}", vec2[i]);
125     }
126
127     for i in 5..vec.len() {
128         println!("{}", vec[i]);
129     }
130
131     for i in 0..MAX_LEN {
132         println!("{}", vec[i]);
133     }
134
135     for i in 0..=MAX_LEN {
136         println!("{}", vec[i]);
137     }
138
139     for i in 5..10 {
140         println!("{}", vec[i]);
141     }
142
143     for i in 5..=10 {
144         println!("{}", vec[i]);
145     }
146
147     for i in 5..vec.len() {
148         println!("{} {}", vec[i], i);
149     }
150
151     for i in 5..10 {
152         println!("{} {}", vec[i], i);
153     }
154
155     // #2542
156     for i in 0..vec.len() {
157         vec[i] = Some(1).unwrap_or_else(|| panic!("error on {}", i));
158     }
159
160     // #3788
161     let test = Test {
162         inner: vec![1, 2, 3, 4],
163     };
164     for i in 0..2 {
165         println!("{}", test[i]);
166     }
167 }
168
169 struct Test {
170     inner: Vec<usize>,
171 }
172
173 impl std::ops::Index<usize> for Test {
174     type Output = usize;
175     fn index(&self, index: usize) -> &Self::Output {
176         &self.inner[index]
177     }
178 }