1 #![allow(unused)] 2 main()3fn main() {} 4 mut_range_bound_upper()5fn 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()12fn 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()19fn 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()28fn 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()35fn 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()43fn 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()50fn immut_range_bound() { 51 let m = 4; 52 for i in 0..m { 53 continue; 54 } // no warning 55 } 56 mut_range_bound_break()57fn 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()67fn 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