]> git.proxmox.com Git - rustc.git/blobdiff - src/tools/clippy/clippy_lints/src/zero_div_zero.rs
New upstream version 1.26.0+dfsg1
[rustc.git] / src / tools / clippy / clippy_lints / src / zero_div_zero.rs
index efe23bcdc47fbb37f2ee498c627ae9edf9528d2d..16c12702c6c54e980e0a1d1658a946742431329d 100644 (file)
@@ -1,4 +1,4 @@
-use consts::{constant_simple, Constant, FloatWidth};
+use consts::{constant_simple, Constant};
 use rustc::lint::*;
 use rustc::hir::*;
 use utils::span_help_and_lint;
@@ -14,9 +14,9 @@ use utils::span_help_and_lint;
 /// ```rust
 /// 0.0f32 / 0.0
 /// ```
-declare_lint! {
+declare_clippy_lint! {
     pub ZERO_DIVIDED_BY_ZERO,
-    Warn,
+    complexity,
     "usage of `0.0 / 0.0` to obtain NaN instead of std::f32::NaN or std::f64::NaN"
 }
 
@@ -37,16 +37,16 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
             // TODO - constant_simple does not fold many operations involving floats.
             // That's probably fine for this lint - it's pretty unlikely that someone would
             // do something like 0.0/(2.0 - 2.0), but it would be nice to warn on that case too.
-            if let Some(Constant::Float(ref lhs_value, lhs_width)) = constant_simple(cx, left);
-            if let Some(Constant::Float(ref rhs_value, rhs_width)) = constant_simple(cx, right);
-            if Ok(0.0) == lhs_value.parse();
-            if Ok(0.0) == rhs_value.parse();
+            if let Some(lhs_value) = constant_simple(cx, left);
+            if let Some(rhs_value) = constant_simple(cx, right);
+            if Constant::F32(0.0) == lhs_value || Constant::F64(0.0) == lhs_value;
+            if Constant::F32(0.0) == rhs_value || Constant::F64(0.0) == rhs_value;
             then {
                 // since we're about to suggest a use of std::f32::NaN or std::f64::NaN,
                 // match the precision of the literals that are given.
-                let float_type = match (lhs_width, rhs_width) {
-                    (FloatWidth::F64, _)
-                    | (_, FloatWidth::F64) => "f64",
+                let float_type = match (lhs_value, rhs_value) {
+                    (Constant::F64(_), _)
+                    | (_, Constant::F64(_)) => "f64",
                     _ => "f32"
                 };
                 span_help_and_lint(