diff options
Diffstat (limited to 'tests/ui/consts/const-negation.rs')
-rw-r--r-- | tests/ui/consts/const-negation.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/ui/consts/const-negation.rs b/tests/ui/consts/const-negation.rs new file mode 100644 index 000000000..18bcdfb01 --- /dev/null +++ b/tests/ui/consts/const-negation.rs @@ -0,0 +1,33 @@ +// run-pass +#![allow(overflowing_literals)] + +fn main() { + #[cfg(target_pointer_width = "32")] + const I: isize = -2147483648isize; + #[cfg(target_pointer_width = "64")] + const I: isize = -9223372036854775808isize; + assert_eq!(i32::MIN as u64, 0xffffffff80000000); + assert_eq!(-2147483648isize as u64, 0xffffffff80000000); + assert_eq!(-2147483648i32 as u64, 0xffffffff80000000); + assert_eq!(i64::MIN as u64, 0x8000000000000000); + #[cfg(target_pointer_width = "64")] + assert_eq!(-9223372036854775808isize as u64, 0x8000000000000000); + #[cfg(target_pointer_width = "32")] + assert_eq!(-9223372036854775808isize as u64, 0); + assert_eq!(-9223372036854775808i32 as u64, 0); + const J: usize = i32::MAX as usize; + const K: usize = -1i32 as u32 as usize; + const L: usize = i32::MIN as usize; + const M: usize = i64::MIN as usize; + match 5 { + J => {}, + K => {}, + L => {}, + M => {}, + _ => {} + } + match 5 { + I => {}, + _ => {} + } +} |