|
15 | 15 |
|
16 | 16 | use core::cmp::Ordering;
|
17 | 17 | use core::fmt::{Debug, Display};
|
18 |
| -use core::i32; |
19 | 18 | use frac::{Bit, False, True, Unsigned, U0, U1, U128, U16, U32, U64, U7, U8};
|
20 | 19 | use sealed::{Fixed, Widest};
|
21 | 20 | use {
|
@@ -152,14 +151,15 @@ macro_rules! sealed_int {
|
152 | 151 | let overflow = src_bits - dst_bits > need_to_shr + leading_zeros as i32;
|
153 | 152 | let bits_128 = u128::from(self);
|
154 | 153 | let (bits, lost_bits) = match need_to_shr {
|
155 |
| - i32::MIN..=-128 => (0, false), |
| 154 | + -0x7fff_ffff..=-128 => (0, false), |
156 | 155 | -127..=-1 => (bits_128 << -need_to_shr, false),
|
157 | 156 | 0 => (bits_128, false),
|
158 | 157 | 1..=127 => {
|
159 | 158 | let shifted = bits_128 >> need_to_shr;
|
160 | 159 | (shifted, shifted << need_to_shr != bits_128)
|
161 | 160 | }
|
162 |
| - _ => (0, true), |
| 161 | + 128..=0x7fff_ffff => (0, true), |
| 162 | + _ => unreachable!(), |
163 | 163 | };
|
164 | 164 | let dir = if lost_bits { Ordering::Less } else { Ordering::Equal };
|
165 | 165 | (Widest::Unsigned(bits), dir, overflow)
|
@@ -218,14 +218,15 @@ macro_rules! sealed_int {
|
218 | 218 | let overflow = src_bits - dst_bits > need_to_shr + leading_ones as i32 - 1;
|
219 | 219 | let bits_128 = i128::from(self);
|
220 | 220 | let (bits, lost_bits) = match need_to_shr {
|
221 |
| - i32::MIN..=-128 => (0, false), |
| 221 | + -0x7fff_ffff..=-128 => (0, false), |
222 | 222 | -127..=-1 => (bits_128 << -need_to_shr, false),
|
223 | 223 | 0 => (bits_128, false),
|
224 | 224 | 1..=127 => {
|
225 | 225 | let shifted = bits_128 >> need_to_shr;
|
226 | 226 | (shifted, shifted << need_to_shr != bits_128)
|
227 | 227 | }
|
228 |
| - _ => (-1, true), |
| 228 | + 128..=0x7fff_ffff => (-1, true), |
| 229 | + _ => unreachable!(), |
229 | 230 | };
|
230 | 231 | let dir = if lost_bits { Ordering::Less } else { Ordering::Equal };
|
231 | 232 | (Widest::Negative(bits), dir, overflow)
|
|
0 commit comments