is_fp and is_floating_point do the same thing, remove the former
also consistently mark all these is_* methods for inlining
This commit is contained in:
parent
8e948df707
commit
87d5fe0e53
3 changed files with 34 additions and 11 deletions
|
@ -1665,6 +1665,7 @@ impl RegionKind {
|
||||||
|
|
||||||
/// Type utilities
|
/// Type utilities
|
||||||
impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
|
#[inline]
|
||||||
pub fn is_unit(&self) -> bool {
|
pub fn is_unit(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Tuple(ref tys) => tys.is_empty(),
|
Tuple(ref tys) => tys.is_empty(),
|
||||||
|
@ -1672,6 +1673,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_never(&self) -> bool {
|
pub fn is_never(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Never => true,
|
Never => true,
|
||||||
|
@ -1726,6 +1728,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_primitive(&self) -> bool {
|
pub fn is_primitive(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Bool | Char | Int(_) | Uint(_) | Float(_) => true,
|
Bool | Char | Int(_) | Uint(_) | Float(_) => true,
|
||||||
|
@ -1741,6 +1744,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_ty_infer(&self) -> bool {
|
pub fn is_ty_infer(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Infer(_) => true,
|
Infer(_) => true,
|
||||||
|
@ -1748,6 +1752,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_phantom_data(&self) -> bool {
|
pub fn is_phantom_data(&self) -> bool {
|
||||||
if let Adt(def, _) = self.sty {
|
if let Adt(def, _) = self.sty {
|
||||||
def.is_phantom_data()
|
def.is_phantom_data()
|
||||||
|
@ -1756,8 +1761,10 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_bool(&self) -> bool { self.sty == Bool }
|
pub fn is_bool(&self) -> bool { self.sty == Bool }
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_param(&self, index: u32) -> bool {
|
pub fn is_param(&self, index: u32) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
ty::Param(ref data) => data.index == index,
|
ty::Param(ref data) => data.index == index,
|
||||||
|
@ -1765,6 +1772,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_self(&self) -> bool {
|
pub fn is_self(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Param(ref p) => p.is_self(),
|
Param(ref p) => p.is_self(),
|
||||||
|
@ -1772,6 +1780,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_slice(&self) -> bool {
|
pub fn is_slice(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
RawPtr(TypeAndMut { ty, .. }) | Ref(_, ty, _) => match ty.sty {
|
RawPtr(TypeAndMut { ty, .. }) | Ref(_, ty, _) => match ty.sty {
|
||||||
|
@ -1814,6 +1823,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_region_ptr(&self) -> bool {
|
pub fn is_region_ptr(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Ref(..) => true,
|
Ref(..) => true,
|
||||||
|
@ -1821,6 +1831,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_mutable_pointer(&self) -> bool {
|
pub fn is_mutable_pointer(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
RawPtr(TypeAndMut { mutbl: hir::Mutability::MutMutable, .. }) |
|
RawPtr(TypeAndMut { mutbl: hir::Mutability::MutMutable, .. }) |
|
||||||
|
@ -1829,6 +1840,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_unsafe_ptr(&self) -> bool {
|
pub fn is_unsafe_ptr(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
RawPtr(_) => return true,
|
RawPtr(_) => return true,
|
||||||
|
@ -1837,6 +1849,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns `true` if this type is an `Arc<T>`.
|
/// Returns `true` if this type is an `Arc<T>`.
|
||||||
|
#[inline]
|
||||||
pub fn is_arc(&self) -> bool {
|
pub fn is_arc(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Adt(def, _) => def.is_arc(),
|
Adt(def, _) => def.is_arc(),
|
||||||
|
@ -1845,6 +1858,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns `true` if this type is an `Rc<T>`.
|
/// Returns `true` if this type is an `Rc<T>`.
|
||||||
|
#[inline]
|
||||||
pub fn is_rc(&self) -> bool {
|
pub fn is_rc(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Adt(def, _) => def.is_rc(),
|
Adt(def, _) => def.is_rc(),
|
||||||
|
@ -1852,6 +1866,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_box(&self) -> bool {
|
pub fn is_box(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Adt(def, _) => def.is_box(),
|
Adt(def, _) => def.is_box(),
|
||||||
|
@ -1870,6 +1885,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
/// A scalar type is one that denotes an atomic datum, with no sub-components.
|
/// A scalar type is one that denotes an atomic datum, with no sub-components.
|
||||||
/// (A RawPtr is scalar because it represents a non-managed pointer, so its
|
/// (A RawPtr is scalar because it represents a non-managed pointer, so its
|
||||||
/// contents are abstract to rustc.)
|
/// contents are abstract to rustc.)
|
||||||
|
#[inline]
|
||||||
pub fn is_scalar(&self) -> bool {
|
pub fn is_scalar(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Bool | Char | Int(_) | Float(_) | Uint(_) |
|
Bool | Char | Int(_) | Float(_) | Uint(_) |
|
||||||
|
@ -1880,6 +1896,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns `true` if this type is a floating point type.
|
/// Returns `true` if this type is a floating point type.
|
||||||
|
#[inline]
|
||||||
pub fn is_floating_point(&self) -> bool {
|
pub fn is_floating_point(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Float(_) |
|
Float(_) |
|
||||||
|
@ -1888,6 +1905,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_trait(&self) -> bool {
|
pub fn is_trait(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Dynamic(..) => true,
|
Dynamic(..) => true,
|
||||||
|
@ -1895,6 +1913,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_enum(&self) -> bool {
|
pub fn is_enum(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Adt(adt_def, _) => {
|
Adt(adt_def, _) => {
|
||||||
|
@ -1904,6 +1923,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_closure(&self) -> bool {
|
pub fn is_closure(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Closure(..) => true,
|
Closure(..) => true,
|
||||||
|
@ -1911,6 +1931,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_generator(&self) -> bool {
|
pub fn is_generator(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Generator(..) => true,
|
Generator(..) => true,
|
||||||
|
@ -1926,6 +1947,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_fresh_ty(&self) -> bool {
|
pub fn is_fresh_ty(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Infer(FreshTy(_)) => true,
|
Infer(FreshTy(_)) => true,
|
||||||
|
@ -1933,6 +1955,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_fresh(&self) -> bool {
|
pub fn is_fresh(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Infer(FreshTy(_)) => true,
|
Infer(FreshTy(_)) => true,
|
||||||
|
@ -1942,6 +1965,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_char(&self) -> bool {
|
pub fn is_char(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Char => true,
|
Char => true,
|
||||||
|
@ -1950,17 +1974,11 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_fp(&self) -> bool {
|
|
||||||
match self.sty {
|
|
||||||
Infer(FloatVar(_)) | Float(_) => true,
|
|
||||||
_ => false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn is_numeric(&self) -> bool {
|
pub fn is_numeric(&self) -> bool {
|
||||||
self.is_integral() || self.is_fp()
|
self.is_integral() || self.is_floating_point()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_signed(&self) -> bool {
|
pub fn is_signed(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Int(_) => true,
|
Int(_) => true,
|
||||||
|
@ -1968,6 +1986,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_pointer_sized(&self) -> bool {
|
pub fn is_pointer_sized(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Int(ast::IntTy::Isize) | Uint(ast::UintTy::Usize) => true,
|
Int(ast::IntTy::Isize) | Uint(ast::UintTy::Usize) => true,
|
||||||
|
@ -1975,6 +1994,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_machine(&self) -> bool {
|
pub fn is_machine(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Int(..) | Uint(..) | Float(..) => true,
|
Int(..) | Uint(..) | Float(..) => true,
|
||||||
|
@ -1982,6 +2002,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn has_concrete_skeleton(&self) -> bool {
|
pub fn has_concrete_skeleton(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Param(_) | Infer(_) | Error => false,
|
Param(_) | Infer(_) | Error => false,
|
||||||
|
@ -2028,6 +2049,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_fn(&self) -> bool {
|
pub fn is_fn(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
FnDef(..) | FnPtr(_) => true,
|
FnDef(..) | FnPtr(_) => true,
|
||||||
|
@ -2043,6 +2065,7 @@ impl<'a, 'gcx, 'tcx> TyS<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_impl_trait(&self) -> bool {
|
pub fn is_impl_trait(&self) -> bool {
|
||||||
match self.sty {
|
match self.sty {
|
||||||
Opaque(..) => true,
|
Opaque(..) => true,
|
||||||
|
|
|
@ -429,7 +429,7 @@ impl<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
||||||
mir::Rvalue::UnaryOp(op, ref operand) => {
|
mir::Rvalue::UnaryOp(op, ref operand) => {
|
||||||
let operand = self.codegen_operand(&mut bx, operand);
|
let operand = self.codegen_operand(&mut bx, operand);
|
||||||
let lloperand = operand.immediate();
|
let lloperand = operand.immediate();
|
||||||
let is_float = operand.layout.ty.is_fp();
|
let is_float = operand.layout.ty.is_floating_point();
|
||||||
let llval = match op {
|
let llval = match op {
|
||||||
mir::UnOp::Not => bx.not(lloperand),
|
mir::UnOp::Not => bx.not(lloperand),
|
||||||
mir::UnOp::Neg => if is_float {
|
mir::UnOp::Neg => if is_float {
|
||||||
|
@ -536,7 +536,7 @@ impl<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
||||||
rhs: Bx::Value,
|
rhs: Bx::Value,
|
||||||
input_ty: Ty<'tcx>,
|
input_ty: Ty<'tcx>,
|
||||||
) -> Bx::Value {
|
) -> Bx::Value {
|
||||||
let is_float = input_ty.is_fp();
|
let is_float = input_ty.is_floating_point();
|
||||||
let is_signed = input_ty.is_signed();
|
let is_signed = input_ty.is_signed();
|
||||||
let is_unit = input_ty.is_unit();
|
let is_unit = input_ty.is_unit();
|
||||||
match op {
|
match op {
|
||||||
|
|
|
@ -4089,7 +4089,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
||||||
hir::UnNeg => {
|
hir::UnNeg => {
|
||||||
let result = self.check_user_unop(expr, oprnd_t, unop);
|
let result = self.check_user_unop(expr, oprnd_t, unop);
|
||||||
// If it's builtin, we can reuse the type, this helps inference.
|
// If it's builtin, we can reuse the type, this helps inference.
|
||||||
if !(oprnd_t.is_integral() || oprnd_t.is_fp()) {
|
if !oprnd_t.is_numeric() {
|
||||||
oprnd_t = result;
|
oprnd_t = result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue