From a2de6e22858a02cfcf6bfc18ff40ebb163ebb07c Mon Sep 17 00:00:00 2001 From: Oliver Middleton Date: Sat, 4 Feb 2017 23:10:28 +0000 Subject: Fix TryFrom for i128/u128 Another case of `as` cast silent truncation being error prone. This also adds a few missing TryFrom tests to libcoretest. --- src/libcore/num/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/libcore') diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index e907eae18bc..97ea6bb347b 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -2626,8 +2626,8 @@ macro_rules! cross_sign_from_int_impl { type Err = TryFromIntError; fn try_from(u: $unsigned) -> Result<$signed, TryFromIntError> { - let max = <$signed as FromStrRadixHelper>::max_value() as u64; - if u as u64 > max { + let max = <$signed as FromStrRadixHelper>::max_value() as u128; + if u as u128 > max { Err(TryFromIntError(())) } else { Ok(u as $signed) @@ -2640,8 +2640,8 @@ macro_rules! cross_sign_from_int_impl { type Err = TryFromIntError; fn try_from(u: $signed) -> Result<$unsigned, TryFromIntError> { - let max = <$unsigned as FromStrRadixHelper>::max_value() as u64; - if u < 0 || u as u64 > max { + let max = <$unsigned as FromStrRadixHelper>::max_value() as u128; + if u < 0 || u as u128 > max { Err(TryFromIntError(())) } else { Ok(u as $unsigned) -- cgit 1.4.1-3-g733a5