Make pretty printing for f16
and f128
consistent
Currently the docs show e.g. {transmute(0xfffeffffffffffffffffffffffffffff): f128} for f128 constants. This should fix that to instead use apfloat for printing, as is done for `f32` and `f64`.
This commit is contained in:
parent
8fcd4dd08e
commit
1299aef921
@ -7,7 +7,7 @@ use crate::ty::{
|
||||
ConstInt, Expr, ParamConst, ScalarInt, Term, TermKind, TypeFoldable, TypeSuperFoldable,
|
||||
TypeSuperVisitable, TypeVisitable, TypeVisitableExt,
|
||||
};
|
||||
use rustc_apfloat::ieee::{Double, Single};
|
||||
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
|
||||
use rustc_apfloat::Float;
|
||||
use rustc_data_structures::fx::{FxHashMap, FxIndexMap};
|
||||
use rustc_data_structures::unord::UnordMap;
|
||||
@ -1710,6 +1710,10 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
|
||||
ty::Bool if int == ScalarInt::FALSE => p!("false"),
|
||||
ty::Bool if int == ScalarInt::TRUE => p!("true"),
|
||||
// Float
|
||||
ty::Float(ty::FloatTy::F16) => {
|
||||
let val = Half::try_from(int).unwrap();
|
||||
p!(write("{}{}f16", val, if val.is_finite() { "" } else { "_" }))
|
||||
}
|
||||
ty::Float(ty::FloatTy::F32) => {
|
||||
let val = Single::try_from(int).unwrap();
|
||||
p!(write("{}{}f32", val, if val.is_finite() { "" } else { "_" }))
|
||||
@ -1718,6 +1722,10 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
|
||||
let val = Double::try_from(int).unwrap();
|
||||
p!(write("{}{}f64", val, if val.is_finite() { "" } else { "_" }))
|
||||
}
|
||||
ty::Float(ty::FloatTy::F128) => {
|
||||
let val = Quad::try_from(int).unwrap();
|
||||
p!(write("{}{}f128", val, if val.is_finite() { "" } else { "_" }))
|
||||
}
|
||||
// Int
|
||||
ty::Uint(_) | ty::Int(_) => {
|
||||
let int =
|
||||
|
Loading…
x
Reference in New Issue
Block a user