1// run-rustfix 2#![allow(unused_assignments, unused_mut, clippy::assign_op_pattern)] 3#![warn(clippy::implicit_saturating_sub)] 4 5fn main() { 6 // Tests for unsigned integers 7 8 let end_8: u8 = 10; 9 let start_8: u8 = 5; 10 let mut u_8: u8 = end_8 - start_8; 11 12 // Lint 13 u_8 = u_8.saturating_sub(1); 14 15 match end_8 { 16 10 => { 17 // Lint 18 u_8 = u_8.saturating_sub(1); 19 }, 20 11 => u_8 += 1, 21 _ => u_8 = 0, 22 } 23 24 let end_16: u16 = 40; 25 let start_16: u16 = 35; 26 27 let mut u_16: u16 = end_16 - start_16; 28 29 // Lint 30 u_16 = u_16.saturating_sub(1); 31 32 let mut end_32: u32 = 7010; 33 let mut start_32: u32 = 7000; 34 35 let mut u_32: u32 = end_32 - start_32; 36 37 // Lint 38 u_32 = u_32.saturating_sub(1); 39 40 // No Lint 41 if u_32 > 0 { 42 u_16 += 1; 43 } 44 45 // No Lint 46 if u_32 != 0 { 47 end_32 -= 1; 48 start_32 += 1; 49 } 50 51 let mut end_64: u64 = 75001; 52 let mut start_64: u64 = 75000; 53 54 let mut u_64: u64 = end_64 - start_64; 55 56 // Lint 57 u_64 = u_64.saturating_sub(1); 58 59 // Lint 60 u_64 = u_64.saturating_sub(1); 61 62 // Lint 63 u_64 = u_64.saturating_sub(1); 64 65 // No Lint 66 if u_64 >= 1 { 67 u_64 -= 1; 68 } 69 70 // No Lint 71 if u_64 > 0 { 72 end_64 -= 1; 73 } 74 75 // Tests for usize 76 let end_usize: usize = 8054; 77 let start_usize: usize = 8050; 78 79 let mut u_usize: usize = end_usize - start_usize; 80 81 // Lint 82 u_usize = u_usize.saturating_sub(1); 83 84 // Tests for signed integers 85 86 let endi_8: i8 = 10; 87 let starti_8: i8 = 50; 88 89 let mut i_8: i8 = endi_8 - starti_8; 90 91 // Lint 92 i_8 = i_8.saturating_sub(1); 93 94 // Lint 95 i_8 = i_8.saturating_sub(1); 96 97 // Lint 98 i_8 = i_8.saturating_sub(1); 99 100 // Lint 101 i_8 = i_8.saturating_sub(1); 102 103 let endi_16: i16 = 45; 104 let starti_16: i16 = 44; 105 106 let mut i_16: i16 = endi_16 - starti_16; 107 108 // Lint 109 i_16 = i_16.saturating_sub(1); 110 111 // Lint 112 i_16 = i_16.saturating_sub(1); 113 114 // Lint 115 i_16 = i_16.saturating_sub(1); 116 117 // Lint 118 i_16 = i_16.saturating_sub(1); 119 120 let endi_32: i32 = 45; 121 let starti_32: i32 = 44; 122 123 let mut i_32: i32 = endi_32 - starti_32; 124 125 // Lint 126 i_32 = i_32.saturating_sub(1); 127 128 // Lint 129 i_32 = i_32.saturating_sub(1); 130 131 // Lint 132 i_32 = i_32.saturating_sub(1); 133 134 // Lint 135 i_32 = i_32.saturating_sub(1); 136 137 let endi_64: i64 = 45; 138 let starti_64: i64 = 44; 139 140 let mut i_64: i64 = endi_64 - starti_64; 141 142 // Lint 143 i_64 = i_64.saturating_sub(1); 144 145 // Lint 146 i_64 = i_64.saturating_sub(1); 147 148 // Lint 149 i_64 = i_64.saturating_sub(1); 150 151 // No Lint 152 if i_64 > 0 { 153 i_64 -= 1; 154 } 155 156 // No Lint 157 if i_64 != 0 { 158 i_64 -= 1; 159 } 160 161 // issue #7831 162 // No Lint 163 if u_32 > 0 { 164 u_32 -= 1; 165 } else { 166 println!("side effect"); 167 } 168} 169