From 4de37160bb0da14d91a3e58508ab6304556a8b48 Mon Sep 17 00:00:00 2001 From: Frederick Zhang Date: Sun, 6 Aug 2017 15:06:21 +1000 Subject: [PATCH] fix ConstFloat usage --- clippy_lints/src/misc.rs | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/clippy_lints/src/misc.rs b/clippy_lints/src/misc.rs index 1804e04d17f2..14331d59daea 100644 --- a/clippy_lints/src/misc.rs +++ b/clippy_lints/src/misc.rs @@ -12,7 +12,7 @@ use utils::{get_item_name, get_parent_expr, implements_trait, in_macro, is_integ span_lint, span_lint_and_then, walk_ptrs_ty, last_path_segment, iter_input_pats, in_constant, match_trait_method, paths}; use utils::sugg::Sugg; -use syntax::ast::{LitKind, CRATE_NODE_ID}; +use syntax::ast::{LitKind, CRATE_NODE_ID, FloatTy}; /// **What it does:** Checks for function arguments and let bindings denoted as `ref`. /// @@ -403,23 +403,41 @@ fn is_allowed(cx: &LateContext, expr: &Expr) -> bool { let res = ConstContext::new(cx.tcx, cx.param_env.and(substs), cx.tables).eval(expr); if let Ok(ConstVal::Float(val)) = res { use std::cmp::Ordering; - match val { - val @ ConstFloat::F32(_) => { - let zero = ConstFloat::F32(0.0); + match val.ty { + FloatTy::F32 => { + let zero = ConstFloat { + ty: FloatTy::F32, + bits: 0.0f32.to_bits() as u128, + }; - let infinity = ConstFloat::F32(::std::f32::INFINITY); + let infinity = ConstFloat { + ty: FloatTy::F32, + bits: ::std::f32::INFINITY.to_bits() as u128, + }; - let neg_infinity = ConstFloat::F32(::std::f32::NEG_INFINITY); + let neg_infinity = ConstFloat { + ty: FloatTy::F32, + bits: ::std::f32::NEG_INFINITY.to_bits() as u128, + }; val.try_cmp(zero) == Ok(Ordering::Equal) || val.try_cmp(infinity) == Ok(Ordering::Equal) || val.try_cmp(neg_infinity) == Ok(Ordering::Equal) }, - val @ ConstFloat::F64(_) => { - let zero = ConstFloat::F64(0.0); + FloatTy::F64 => { + let zero = ConstFloat { + ty: FloatTy::F64, + bits: 0.0f64.to_bits() as u128, + }; - let infinity = ConstFloat::F64(::std::f64::INFINITY); + let infinity = ConstFloat { + ty: FloatTy::F64, + bits: ::std::f64::INFINITY.to_bits() as u128, + }; - let neg_infinity = ConstFloat::F64(::std::f64::NEG_INFINITY); + let neg_infinity = ConstFloat { + ty: FloatTy::F64, + bits: ::std::f64::NEG_INFINITY.to_bits() as u128, + }; val.try_cmp(zero) == Ok(Ordering::Equal) || val.try_cmp(infinity) == Ok(Ordering::Equal) || val.try_cmp(neg_infinity) == Ok(Ordering::Equal)