1 #![allow(unused)]
2 
main()3 fn main() {}
4 
mut_range_bound_upper()5 fn mut_range_bound_upper() {
6     let mut m = 4;
7     for i in 0..m {
8         m = 5;
9     } // warning
10 }
11 
mut_range_bound_lower()12 fn mut_range_bound_lower() {
13     let mut m = 4;
14     for i in m..10 {
15         m *= 2;
16     } // warning
17 }
18 
mut_range_bound_both()19 fn mut_range_bound_both() {
20     let mut m = 4;
21     let mut n = 6;
22     for i in m..n {
23         m = 5;
24         n = 7;
25     } // warning (1 for each mutated bound)
26 }
27 
mut_range_bound_no_mutation()28 fn mut_range_bound_no_mutation() {
29     let mut m = 4;
30     for i in 0..m {
31         continue;
32     } // no warning
33 }
34 
mut_borrow_range_bound()35 fn mut_borrow_range_bound() {
36     let mut m = 4;
37     for i in 0..m {
38         let n = &mut m; // warning
39         *n += 1;
40     }
41 }
42 
immut_borrow_range_bound()43 fn immut_borrow_range_bound() {
44     let mut m = 4;
45     for i in 0..m {
46         let n = &m; // should be no warning?
47     }
48 }
49 
immut_range_bound()50 fn immut_range_bound() {
51     let m = 4;
52     for i in 0..m {
53         continue;
54     } // no warning
55 }
56 
mut_range_bound_break()57 fn mut_range_bound_break() {
58     let mut m = 4;
59     for i in 0..m {
60         if m == 4 {
61             m = 5; // no warning because of immediate break
62             break;
63         }
64     }
65 }
66 
mut_range_bound_no_immediate_break()67 fn mut_range_bound_no_immediate_break() {
68     let mut m = 4;
69     for i in 0..m {
70         m = 2; // warning because it is not immediately followed by break
71         if m == 4 {
72             break;
73         }
74     }
75 
76     let mut n = 3;
77     for i in n..10 {
78         if n == 4 {
79             n = 1; // FIXME: warning because is is not immediately followed by break
80             let _ = 2;
81             break;
82         }
83     }
84 }
85