mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 07:22:42 +00:00
Rollup merge of #83018 - oli-obk:float_check, r=davidtwco
Reintroduce accidentally deleted assertions. These were removed in https://github.com/rust-lang/rust/pull/50198
This commit is contained in:
commit
14846d945d
@ -1,3 +1,4 @@
|
||||
use rustc_apfloat::Float;
|
||||
use rustc_ast as ast;
|
||||
use rustc_middle::mir::interpret::{
|
||||
Allocation, ConstValue, LitToConstError, LitToConstInput, Scalar,
|
||||
@ -61,20 +62,40 @@ fn parse_float<'tcx>(num: Symbol, fty: ty::FloatTy, neg: bool) -> Result<ConstVa
|
||||
use rustc_apfloat::ieee::{Double, Single};
|
||||
let scalar = match fty {
|
||||
ty::FloatTy::F32 => {
|
||||
num.parse::<f32>().map_err(|_| ())?;
|
||||
let rust_f = num.parse::<f32>().map_err(|_| ())?;
|
||||
let mut f = num.parse::<Single>().unwrap_or_else(|e| {
|
||||
panic!("apfloat::ieee::Single failed to parse `{}`: {:?}", num, e)
|
||||
});
|
||||
assert!(
|
||||
u128::from(rust_f.to_bits()) == f.to_bits(),
|
||||
"apfloat::ieee::Single gave different result for `{}`: \
|
||||
{}({:#x}) vs Rust's {}({:#x})",
|
||||
rust_f,
|
||||
f,
|
||||
f.to_bits(),
|
||||
Single::from_bits(rust_f.to_bits().into()),
|
||||
rust_f.to_bits()
|
||||
);
|
||||
if neg {
|
||||
f = -f;
|
||||
}
|
||||
Scalar::from_f32(f)
|
||||
}
|
||||
ty::FloatTy::F64 => {
|
||||
num.parse::<f64>().map_err(|_| ())?;
|
||||
let rust_f = num.parse::<f64>().map_err(|_| ())?;
|
||||
let mut f = num.parse::<Double>().unwrap_or_else(|e| {
|
||||
panic!("apfloat::ieee::Double failed to parse `{}`: {:?}", num, e)
|
||||
});
|
||||
assert!(
|
||||
u128::from(rust_f.to_bits()) == f.to_bits(),
|
||||
"apfloat::ieee::Double gave different result for `{}`: \
|
||||
{}({:#x}) vs Rust's {}({:#x})",
|
||||
rust_f,
|
||||
f,
|
||||
f.to_bits(),
|
||||
Double::from_bits(rust_f.to_bits().into()),
|
||||
rust_f.to_bits()
|
||||
);
|
||||
if neg {
|
||||
f = -f;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user