From 8d54ea3ec9c48eaeaab8fa9061cf28c2678e8ae9 Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Mon, 30 Mar 2015 01:23:15 +0200 Subject: [PATCH] Fallout from changes for overflow-checking during constant evaluation. --- src/libcoretest/num/uint_macros.rs | 2 +- src/libstd/old_io/extensions.rs | 3 ++- src/test/compile-fail/non-constant-enum-for-vec-repeat.rs | 5 ++++- src/test/compile-fail/non-constant-expr-for-vec-repeat.rs | 3 ++- src/test/run-pass/big-literals.rs | 7 ++++++- src/test/run-pass/small-enum-range-edge.rs | 4 ++-- 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/libcoretest/num/uint_macros.rs b/src/libcoretest/num/uint_macros.rs index 39e41a4fad3..e3eff6e7512 100644 --- a/src/libcoretest/num/uint_macros.rs +++ b/src/libcoretest/num/uint_macros.rs @@ -20,7 +20,7 @@ mod tests { fn test_overflows() { assert!(MAX > 0); assert!(MIN <= 0); - assert!(MIN + MAX + 1 == 0); + assert!((MIN + MAX).wrapping_add(1) == 0); } #[test] diff --git a/src/libstd/old_io/extensions.rs b/src/libstd/old_io/extensions.rs index 0e5dd3aa4aa..aec794af759 100644 --- a/src/libstd/old_io/extensions.rs +++ b/src/libstd/old_io/extensions.rs @@ -519,7 +519,8 @@ mod bench { ({ use super::u64_from_be_bytes; - let data = (0..$stride*100+$start_index).collect::>(); + let len = $stride.wrapping_mul(100).wrapping_add($start_index); + let data = (0..len).collect::>(); let mut sum = 0; $b.iter(|| { let mut i = $start_index; diff --git a/src/test/compile-fail/non-constant-enum-for-vec-repeat.rs b/src/test/compile-fail/non-constant-enum-for-vec-repeat.rs index 0212adff305..a7cabae16be 100644 --- a/src/test/compile-fail/non-constant-enum-for-vec-repeat.rs +++ b/src/test/compile-fail/non-constant-enum-for-vec-repeat.rs @@ -8,9 +8,12 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// Note: This test is checking that we forbid a coding pattern that +// Issue #5873 explicitly wants to allow. + enum State { ST_NULL, ST_WHITESPACE } fn main() { [State::ST_NULL; (State::ST_WHITESPACE as usize)]; - //~^ ERROR expected constant integer for repeat count, found non-constant expression + //~^ ERROR expected constant integer for repeat count, but non-constant path } diff --git a/src/test/compile-fail/non-constant-expr-for-vec-repeat.rs b/src/test/compile-fail/non-constant-expr-for-vec-repeat.rs index 26528543b43..3ce206ff7fb 100644 --- a/src/test/compile-fail/non-constant-expr-for-vec-repeat.rs +++ b/src/test/compile-fail/non-constant-expr-for-vec-repeat.rs @@ -12,6 +12,7 @@ fn main() { fn bar(n: usize) { - let _x = [0; n]; //~ ERROR expected constant integer for repeat count, found variable + let _x = [0; n]; + //~^ ERROR expected constant integer for repeat count, found variable } } diff --git a/src/test/run-pass/big-literals.rs b/src/test/run-pass/big-literals.rs index 09746380eba..ff13a1345d2 100644 --- a/src/test/run-pass/big-literals.rs +++ b/src/test/run-pass/big-literals.rs @@ -10,11 +10,16 @@ // pretty-expanded FIXME #23616 +#![feature(core)] + +// Catch mistakes in the overflowing literals lint. +#![deny(overflowing_literals)] + pub fn main() { assert_eq!(0xffffffff, (-1 as u32)); assert_eq!(4294967295, (-1 as u32)); assert_eq!(0xffffffffffffffff, (-1 as u64)); assert_eq!(18446744073709551615, (-1 as u64)); - assert_eq!(-2147483648 - 1, 2147483647); + assert_eq!((-2147483648).wrapping_sub(1), 2147483647); } diff --git a/src/test/run-pass/small-enum-range-edge.rs b/src/test/run-pass/small-enum-range-edge.rs index df204065d16..ded66fb86ad 100644 --- a/src/test/run-pass/small-enum-range-edge.rs +++ b/src/test/run-pass/small-enum-range-edge.rs @@ -29,8 +29,8 @@ static CLs: Es = Es::Ls; static CHs: Es = Es::Hs; pub fn main() { - assert_eq!((Eu::Hu as u8) + 1, Eu::Lu as u8); - assert_eq!((Es::Hs as i8) + 1, Es::Ls as i8); + assert_eq!((Eu::Hu as u8).wrapping_add(1), Eu::Lu as u8); + assert_eq!((Es::Hs as i8).wrapping_add(1), Es::Ls as i8); assert_eq!(CLu as u8, Eu::Lu as u8); assert_eq!(CHu as u8, Eu::Hu as u8); assert_eq!(CLs as i8, Es::Ls as i8);