Use rustc_type_ir::{IntTy,UintTy,FloatTy} instead of the rustc_ast` ones in types
This commit is contained in:
parent
0724573448
commit
933bb18956
9 changed files with 143 additions and 74 deletions
|
|
@ -3,13 +3,12 @@
|
|||
|
||||
use crate::ty::{self, Ty};
|
||||
|
||||
use rustc_ast as ast;
|
||||
use rustc_macros::HashStable;
|
||||
|
||||
/// Types that are represented as ints.
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||
pub enum IntTy {
|
||||
U(ast::UintTy),
|
||||
U(ty::UintTy),
|
||||
I,
|
||||
CEnum,
|
||||
Bool,
|
||||
|
|
|
|||
|
|
@ -19,10 +19,10 @@ use crate::ty::subst::{GenericArg, GenericArgKind, InternalSubsts, Subst, Substs
|
|||
use crate::ty::TyKind::*;
|
||||
use crate::ty::{
|
||||
self, AdtDef, AdtKind, Binder, BindingMode, BoundVar, CanonicalPolyFnSig, Const, ConstVid,
|
||||
DefIdTree, ExistentialPredicate, FloatVar, FloatVid, GenericParamDefKind, InferConst, InferTy,
|
||||
IntVar, IntVid, List, ParamConst, ParamTy, PolyFnSig, Predicate, PredicateInner, PredicateKind,
|
||||
ProjectionTy, Region, RegionKind, ReprOptions, TraitObjectVisitor, Ty, TyKind, TyS, TyVar,
|
||||
TyVid, TypeAndMut, Visibility,
|
||||
DefIdTree, ExistentialPredicate, FloatTy, FloatVar, FloatVid, GenericParamDefKind, InferConst,
|
||||
InferTy, IntTy, IntVar, IntVid, List, ParamConst, ParamTy, PolyFnSig, Predicate,
|
||||
PredicateInner, PredicateKind, ProjectionTy, Region, RegionKind, ReprOptions,
|
||||
TraitObjectVisitor, Ty, TyKind, TyS, TyVar, TyVid, TypeAndMut, UintTy, Visibility,
|
||||
};
|
||||
use rustc_ast as ast;
|
||||
use rustc_ast::expand::allocator::AllocatorKind;
|
||||
|
|
@ -839,20 +839,20 @@ impl<'tcx> CommonTypes<'tcx> {
|
|||
bool: mk(Bool),
|
||||
char: mk(Char),
|
||||
never: mk(Never),
|
||||
isize: mk(Int(ast::IntTy::Isize)),
|
||||
i8: mk(Int(ast::IntTy::I8)),
|
||||
i16: mk(Int(ast::IntTy::I16)),
|
||||
i32: mk(Int(ast::IntTy::I32)),
|
||||
i64: mk(Int(ast::IntTy::I64)),
|
||||
i128: mk(Int(ast::IntTy::I128)),
|
||||
usize: mk(Uint(ast::UintTy::Usize)),
|
||||
u8: mk(Uint(ast::UintTy::U8)),
|
||||
u16: mk(Uint(ast::UintTy::U16)),
|
||||
u32: mk(Uint(ast::UintTy::U32)),
|
||||
u64: mk(Uint(ast::UintTy::U64)),
|
||||
u128: mk(Uint(ast::UintTy::U128)),
|
||||
f32: mk(Float(ast::FloatTy::F32)),
|
||||
f64: mk(Float(ast::FloatTy::F64)),
|
||||
isize: mk(Int(ty::IntTy::Isize)),
|
||||
i8: mk(Int(ty::IntTy::I8)),
|
||||
i16: mk(Int(ty::IntTy::I16)),
|
||||
i32: mk(Int(ty::IntTy::I32)),
|
||||
i64: mk(Int(ty::IntTy::I64)),
|
||||
i128: mk(Int(ty::IntTy::I128)),
|
||||
usize: mk(Uint(ty::UintTy::Usize)),
|
||||
u8: mk(Uint(ty::UintTy::U8)),
|
||||
u16: mk(Uint(ty::UintTy::U16)),
|
||||
u32: mk(Uint(ty::UintTy::U32)),
|
||||
u64: mk(Uint(ty::UintTy::U64)),
|
||||
u128: mk(Uint(ty::UintTy::U128)),
|
||||
f32: mk(Float(ty::FloatTy::F32)),
|
||||
f64: mk(Float(ty::FloatTy::F64)),
|
||||
str_: mk(Str),
|
||||
self_param: mk(ty::Param(ty::ParamTy { index: 0, name: kw::SelfUpper })),
|
||||
|
||||
|
|
@ -2102,32 +2102,32 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
if pred.kind() != binder { self.mk_predicate(binder) } else { pred }
|
||||
}
|
||||
|
||||
pub fn mk_mach_int(self, tm: ast::IntTy) -> Ty<'tcx> {
|
||||
pub fn mk_mach_int(self, tm: IntTy) -> Ty<'tcx> {
|
||||
match tm {
|
||||
ast::IntTy::Isize => self.types.isize,
|
||||
ast::IntTy::I8 => self.types.i8,
|
||||
ast::IntTy::I16 => self.types.i16,
|
||||
ast::IntTy::I32 => self.types.i32,
|
||||
ast::IntTy::I64 => self.types.i64,
|
||||
ast::IntTy::I128 => self.types.i128,
|
||||
IntTy::Isize => self.types.isize,
|
||||
IntTy::I8 => self.types.i8,
|
||||
IntTy::I16 => self.types.i16,
|
||||
IntTy::I32 => self.types.i32,
|
||||
IntTy::I64 => self.types.i64,
|
||||
IntTy::I128 => self.types.i128,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn mk_mach_uint(self, tm: ast::UintTy) -> Ty<'tcx> {
|
||||
pub fn mk_mach_uint(self, tm: UintTy) -> Ty<'tcx> {
|
||||
match tm {
|
||||
ast::UintTy::Usize => self.types.usize,
|
||||
ast::UintTy::U8 => self.types.u8,
|
||||
ast::UintTy::U16 => self.types.u16,
|
||||
ast::UintTy::U32 => self.types.u32,
|
||||
ast::UintTy::U64 => self.types.u64,
|
||||
ast::UintTy::U128 => self.types.u128,
|
||||
UintTy::Usize => self.types.usize,
|
||||
UintTy::U8 => self.types.u8,
|
||||
UintTy::U16 => self.types.u16,
|
||||
UintTy::U32 => self.types.u32,
|
||||
UintTy::U64 => self.types.u64,
|
||||
UintTy::U128 => self.types.u128,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn mk_mach_float(self, tm: ast::FloatTy) -> Ty<'tcx> {
|
||||
pub fn mk_mach_float(self, tm: FloatTy) -> Ty<'tcx> {
|
||||
match tm {
|
||||
ast::FloatTy::F32 => self.types.f32,
|
||||
ast::FloatTy::F64 => self.types.f64,
|
||||
FloatTy::F32 => self.types.f32,
|
||||
FloatTy::F64 => self.types.f64,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
use crate::traits::{ObligationCause, ObligationCauseCode};
|
||||
use crate::ty::diagnostics::suggest_constraining_type_param;
|
||||
use crate::ty::{self, BoundRegionKind, Region, Ty, TyCtxt};
|
||||
use rustc_ast as ast;
|
||||
use rustc_errors::Applicability::{MachineApplicable, MaybeIncorrect};
|
||||
use rustc_errors::{pluralize, DiagnosticBuilder};
|
||||
use rustc_hir as hir;
|
||||
|
|
@ -48,7 +47,7 @@ pub enum TypeError<'tcx> {
|
|||
|
||||
Sorts(ExpectedFound<Ty<'tcx>>),
|
||||
IntMismatch(ExpectedFound<ty::IntVarValue>),
|
||||
FloatMismatch(ExpectedFound<ast::FloatTy>),
|
||||
FloatMismatch(ExpectedFound<ty::FloatTy>),
|
||||
Traits(ExpectedFound<DefId>),
|
||||
VariadicMismatch(ExpectedFound<bool>),
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use crate::ich::StableHashingContext;
|
||||
use crate::ty::{self, Ty, TyCtxt};
|
||||
use rustc_ast as ast;
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_hir::def_id::DefId;
|
||||
use std::fmt::Debug;
|
||||
|
|
@ -24,9 +23,9 @@ where
|
|||
{
|
||||
BoolSimplifiedType,
|
||||
CharSimplifiedType,
|
||||
IntSimplifiedType(ast::IntTy),
|
||||
UintSimplifiedType(ast::UintTy),
|
||||
FloatSimplifiedType(ast::FloatTy),
|
||||
IntSimplifiedType(ty::IntTy),
|
||||
UintSimplifiedType(ty::UintTy),
|
||||
FloatSimplifiedType(ty::FloatTy),
|
||||
AdtSimplifiedType(D),
|
||||
StrSimplifiedType,
|
||||
ArraySimplifiedType,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ use crate::mir::{GeneratorLayout, GeneratorSavedLocal};
|
|||
use crate::ty::subst::Subst;
|
||||
use crate::ty::{self, subst::SubstsRef, ReprOptions, Ty, TyCtxt, TypeFoldable};
|
||||
|
||||
use rustc_ast::{self as ast, IntTy, UintTy};
|
||||
use rustc_ast as ast;
|
||||
use rustc_attr as attr;
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_hir as hir;
|
||||
|
|
@ -30,6 +30,8 @@ use std::ops::Bound;
|
|||
pub trait IntegerExt {
|
||||
fn to_ty<'tcx>(&self, tcx: TyCtxt<'tcx>, signed: bool) -> Ty<'tcx>;
|
||||
fn from_attr<C: HasDataLayout>(cx: &C, ity: attr::IntType) -> Integer;
|
||||
fn from_int_ty<C: HasDataLayout>(cx: &C, ity: ty::IntTy) -> Integer;
|
||||
fn from_uint_ty<C: HasDataLayout>(cx: &C, uty: ty::UintTy) -> Integer;
|
||||
fn repr_discr<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
ty: Ty<'tcx>,
|
||||
|
|
@ -60,17 +62,38 @@ impl IntegerExt for Integer {
|
|||
let dl = cx.data_layout();
|
||||
|
||||
match ity {
|
||||
attr::SignedInt(IntTy::I8) | attr::UnsignedInt(UintTy::U8) => I8,
|
||||
attr::SignedInt(IntTy::I16) | attr::UnsignedInt(UintTy::U16) => I16,
|
||||
attr::SignedInt(IntTy::I32) | attr::UnsignedInt(UintTy::U32) => I32,
|
||||
attr::SignedInt(IntTy::I64) | attr::UnsignedInt(UintTy::U64) => I64,
|
||||
attr::SignedInt(IntTy::I128) | attr::UnsignedInt(UintTy::U128) => I128,
|
||||
attr::SignedInt(IntTy::Isize) | attr::UnsignedInt(UintTy::Usize) => {
|
||||
attr::SignedInt(ast::IntTy::I8) | attr::UnsignedInt(ast::UintTy::U8) => I8,
|
||||
attr::SignedInt(ast::IntTy::I16) | attr::UnsignedInt(ast::UintTy::U16) => I16,
|
||||
attr::SignedInt(ast::IntTy::I32) | attr::UnsignedInt(ast::UintTy::U32) => I32,
|
||||
attr::SignedInt(ast::IntTy::I64) | attr::UnsignedInt(ast::UintTy::U64) => I64,
|
||||
attr::SignedInt(ast::IntTy::I128) | attr::UnsignedInt(ast::UintTy::U128) => I128,
|
||||
attr::SignedInt(ast::IntTy::Isize) | attr::UnsignedInt(ast::UintTy::Usize) => {
|
||||
dl.ptr_sized_integer()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn from_int_ty<C: HasDataLayout>(cx: &C, ity: ty::IntTy) -> Integer {
|
||||
match ity {
|
||||
ty::IntTy::I8 => I8,
|
||||
ty::IntTy::I16 => I16,
|
||||
ty::IntTy::I32 => I32,
|
||||
ty::IntTy::I64 => I64,
|
||||
ty::IntTy::I128 => I128,
|
||||
ty::IntTy::Isize => cx.data_layout().ptr_sized_integer(),
|
||||
}
|
||||
}
|
||||
fn from_uint_ty<C: HasDataLayout>(cx: &C, ity: ty::UintTy) -> Integer {
|
||||
match ity {
|
||||
ty::UintTy::U8 => I8,
|
||||
ty::UintTy::U16 => I16,
|
||||
ty::UintTy::U32 => I32,
|
||||
ty::UintTy::U64 => I64,
|
||||
ty::UintTy::U128 => I128,
|
||||
ty::UintTy::Usize => cx.data_layout().ptr_sized_integer(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Finds the appropriate Integer type and signedness for the given
|
||||
/// signed discriminant range and `#[repr]` attribute.
|
||||
/// N.B.: `u128` values above `i128::MAX` will be treated as signed, but
|
||||
|
|
@ -487,11 +510,11 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
|
|||
self,
|
||||
Scalar { value: Int(I32, false), valid_range: 0..=0x10FFFF },
|
||||
)),
|
||||
ty::Int(ity) => scalar(Int(Integer::from_attr(dl, attr::SignedInt(ity)), true)),
|
||||
ty::Uint(ity) => scalar(Int(Integer::from_attr(dl, attr::UnsignedInt(ity)), false)),
|
||||
ty::Int(ity) => scalar(Int(Integer::from_int_ty(dl, ity), true)),
|
||||
ty::Uint(ity) => scalar(Int(Integer::from_uint_ty(dl, ity), false)),
|
||||
ty::Float(fty) => scalar(match fty {
|
||||
ast::FloatTy::F32 => F32,
|
||||
ast::FloatTy::F64 => F64,
|
||||
ty::FloatTy::F32 => F32,
|
||||
ty::FloatTy::F64 => F64,
|
||||
}),
|
||||
ty::FnPtr(_) => {
|
||||
let mut ptr = scalar_unit(Pointer);
|
||||
|
|
|
|||
|
|
@ -3045,6 +3045,57 @@ pub fn is_impl_trait_defn(tcx: TyCtxt<'_>, def_id: DefId) -> Option<DefId> {
|
|||
None
|
||||
}
|
||||
|
||||
pub fn int_ty(ity: ast::IntTy) -> IntTy {
|
||||
match ity {
|
||||
ast::IntTy::Isize => IntTy::Isize,
|
||||
ast::IntTy::I8 => IntTy::I8,
|
||||
ast::IntTy::I16 => IntTy::I16,
|
||||
ast::IntTy::I32 => IntTy::I32,
|
||||
ast::IntTy::I64 => IntTy::I64,
|
||||
ast::IntTy::I128 => IntTy::I128,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn uint_ty(uty: ast::UintTy) -> UintTy {
|
||||
match uty {
|
||||
ast::UintTy::Usize => UintTy::Usize,
|
||||
ast::UintTy::U8 => UintTy::U8,
|
||||
ast::UintTy::U16 => UintTy::U16,
|
||||
ast::UintTy::U32 => UintTy::U32,
|
||||
ast::UintTy::U64 => UintTy::U64,
|
||||
ast::UintTy::U128 => UintTy::U128,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn float_ty(fty: ast::FloatTy) -> FloatTy {
|
||||
match fty {
|
||||
ast::FloatTy::F32 => FloatTy::F32,
|
||||
ast::FloatTy::F64 => FloatTy::F64,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ast_int_ty(ity: IntTy) -> ast::IntTy {
|
||||
match ity {
|
||||
IntTy::Isize => ast::IntTy::Isize,
|
||||
IntTy::I8 => ast::IntTy::I8,
|
||||
IntTy::I16 => ast::IntTy::I16,
|
||||
IntTy::I32 => ast::IntTy::I32,
|
||||
IntTy::I64 => ast::IntTy::I64,
|
||||
IntTy::I128 => ast::IntTy::I128,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ast_uint_ty(uty: UintTy) -> ast::UintTy {
|
||||
match uty {
|
||||
UintTy::Usize => ast::UintTy::Usize,
|
||||
UintTy::U8 => ast::UintTy::U8,
|
||||
UintTy::U16 => ast::UintTy::U16,
|
||||
UintTy::U32 => ast::UintTy::U32,
|
||||
UintTy::U64 => ast::UintTy::U64,
|
||||
UintTy::U128 => ast::UintTy::U128,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn provide(providers: &mut ty::query::Providers) {
|
||||
context::provide(providers);
|
||||
erase_regions::provide(providers);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ use crate::mir::interpret::{AllocId, ConstValue, GlobalAlloc, Pointer, Scalar};
|
|||
use crate::ty::subst::{GenericArg, GenericArgKind, Subst};
|
||||
use crate::ty::{self, ConstInt, DefIdTree, ParamConst, ScalarInt, Ty, TyCtxt, TypeFoldable};
|
||||
use rustc_apfloat::ieee::{Double, Single};
|
||||
use rustc_ast as ast;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::{self, CtorKind, DefKind, Namespace};
|
||||
|
|
@ -973,7 +972,7 @@ pub trait PrettyPrinter<'tcx>:
|
|||
ty::TyS {
|
||||
kind:
|
||||
ty::Array(
|
||||
ty::TyS { kind: ty::Uint(ast::UintTy::U8), .. },
|
||||
ty::TyS { kind: ty::Uint(ty::UintTy::U8), .. },
|
||||
ty::Const {
|
||||
val: ty::ConstKind::Value(ConstValue::Scalar(int)),
|
||||
..
|
||||
|
|
@ -1002,10 +1001,10 @@ pub trait PrettyPrinter<'tcx>:
|
|||
(Scalar::Int(int), ty::Bool) if int == ScalarInt::FALSE => p!("false"),
|
||||
(Scalar::Int(int), ty::Bool) if int == ScalarInt::TRUE => p!("true"),
|
||||
// Float
|
||||
(Scalar::Int(int), ty::Float(ast::FloatTy::F32)) => {
|
||||
(Scalar::Int(int), ty::Float(ty::FloatTy::F32)) => {
|
||||
p!(write("{}f32", Single::try_from(int).unwrap()))
|
||||
}
|
||||
(Scalar::Int(int), ty::Float(ast::FloatTy::F64)) => {
|
||||
(Scalar::Int(int), ty::Float(ty::FloatTy::F64)) => {
|
||||
p!(write("{}f64", Double::try_from(int).unwrap()))
|
||||
}
|
||||
// Int
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ use crate::ty::{
|
|||
};
|
||||
use crate::ty::{DelaySpanBugEmitted, List, ParamEnv, TyS};
|
||||
use polonius_engine::Atom;
|
||||
use rustc_ast as ast;
|
||||
use rustc_data_structures::captures::Captures;
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def_id::DefId;
|
||||
|
|
@ -104,13 +103,13 @@ pub enum TyKind<'tcx> {
|
|||
Char,
|
||||
|
||||
/// A primitive signed integer type. For example, `i32`.
|
||||
Int(ast::IntTy),
|
||||
Int(ty::IntTy),
|
||||
|
||||
/// A primitive unsigned integer type. For example, `u32`.
|
||||
Uint(ast::UintTy),
|
||||
Uint(ty::UintTy),
|
||||
|
||||
/// A primitive floating-point type. For example, `f64`.
|
||||
Float(ast::FloatTy),
|
||||
Float(ty::FloatTy),
|
||||
|
||||
/// Algebraic data types (ADT). For example: structures, enumerations and unions.
|
||||
///
|
||||
|
|
@ -1798,7 +1797,7 @@ impl<'tcx> TyS<'tcx> {
|
|||
pub fn sequence_element_type(&self, tcx: TyCtxt<'tcx>) -> Ty<'tcx> {
|
||||
match self.kind() {
|
||||
Array(ty, _) | Slice(ty) => ty,
|
||||
Str => tcx.mk_mach_uint(ast::UintTy::U8),
|
||||
Str => tcx.mk_mach_uint(ty::UintTy::U8),
|
||||
_ => bug!("`sequence_element_type` called on non-sequence value: {}", self),
|
||||
}
|
||||
}
|
||||
|
|
@ -1938,7 +1937,7 @@ impl<'tcx> TyS<'tcx> {
|
|||
|
||||
#[inline]
|
||||
pub fn is_ptr_sized_integral(&self) -> bool {
|
||||
matches!(self.kind(), Int(ast::IntTy::Isize) | Uint(ast::UintTy::Usize))
|
||||
matches!(self.kind(), Int(ty::IntTy::Isize) | Uint(ty::UintTy::Usize))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
@ -2126,9 +2125,9 @@ impl<'tcx> TyS<'tcx> {
|
|||
pub fn to_opt_closure_kind(&self) -> Option<ty::ClosureKind> {
|
||||
match self.kind() {
|
||||
Int(int_ty) => match int_ty {
|
||||
ast::IntTy::I8 => Some(ty::ClosureKind::Fn),
|
||||
ast::IntTy::I16 => Some(ty::ClosureKind::FnMut),
|
||||
ast::IntTy::I32 => Some(ty::ClosureKind::FnOnce),
|
||||
ty::IntTy::I8 => Some(ty::ClosureKind::Fn),
|
||||
ty::IntTy::I16 => Some(ty::ClosureKind::FnMut),
|
||||
ty::IntTy::I32 => Some(ty::ClosureKind::FnOnce),
|
||||
_ => bug!("cannot convert type `{:?}` to a closure kind", self),
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ impl<'tcx> fmt::Display for Discr<'tcx> {
|
|||
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match *self.ty.kind() {
|
||||
ty::Int(ity) => {
|
||||
let size = ty::tls::with(|tcx| Integer::from_attr(&tcx, SignedInt(ity)).size());
|
||||
let size = ty::tls::with(|tcx| Integer::from_int_ty(&tcx, ity).size());
|
||||
let x = self.val;
|
||||
// sign extend the raw representation to be an i128
|
||||
let x = size.sign_extend(x) as i128;
|
||||
|
|
@ -59,8 +59,8 @@ fn unsigned_max(size: Size) -> u128 {
|
|||
|
||||
fn int_size_and_signed<'tcx>(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> (Size, bool) {
|
||||
let (int, signed) = match *ty.kind() {
|
||||
Int(ity) => (Integer::from_attr(&tcx, SignedInt(ity)), true),
|
||||
Uint(uty) => (Integer::from_attr(&tcx, UnsignedInt(uty)), false),
|
||||
Int(ity) => (Integer::from_int_ty(&tcx, ity), true),
|
||||
Uint(uty) => (Integer::from_uint_ty(&tcx, uty), false),
|
||||
_ => bug!("non integer discriminant"),
|
||||
};
|
||||
(int.size(), signed)
|
||||
|
|
@ -642,8 +642,8 @@ impl<'tcx> ty::TyS<'tcx> {
|
|||
}
|
||||
ty::Char => Some(std::char::MAX as u128),
|
||||
ty::Float(fty) => Some(match fty {
|
||||
ast::FloatTy::F32 => rustc_apfloat::ieee::Single::INFINITY.to_bits(),
|
||||
ast::FloatTy::F64 => rustc_apfloat::ieee::Double::INFINITY.to_bits(),
|
||||
ty::FloatTy::F32 => rustc_apfloat::ieee::Single::INFINITY.to_bits(),
|
||||
ty::FloatTy::F64 => rustc_apfloat::ieee::Double::INFINITY.to_bits(),
|
||||
}),
|
||||
_ => None,
|
||||
};
|
||||
|
|
@ -661,8 +661,8 @@ impl<'tcx> ty::TyS<'tcx> {
|
|||
}
|
||||
ty::Char => Some(0),
|
||||
ty::Float(fty) => Some(match fty {
|
||||
ast::FloatTy::F32 => (-::rustc_apfloat::ieee::Single::INFINITY).to_bits(),
|
||||
ast::FloatTy::F64 => (-::rustc_apfloat::ieee::Double::INFINITY).to_bits(),
|
||||
ty::FloatTy::F32 => (-::rustc_apfloat::ieee::Single::INFINITY).to_bits(),
|
||||
ty::FloatTy::F64 => (-::rustc_apfloat::ieee::Double::INFINITY).to_bits(),
|
||||
}),
|
||||
_ => None,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue