about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJosh Mcguigan <joshmcg88@gmail.com>2018-10-07 11:38:20 -0700
committerJosh Mcguigan <joshmcg88@gmail.com>2018-10-07 11:38:20 -0700
commit8a77a25b8a4020577476056b5741fccb87be587e (patch)
treea0f3f82bc2b23d2e42c44662dee0da09fcdebea0
parent63ceabf0cf5758fa513b12b648608db7ff6f5166 (diff)
downloadrust-8a77a25b8a4020577476056b5741fccb87be587e.tar.gz
rust-8a77a25b8a4020577476056b5741fccb87be587e.zip
Fix excessive_precision false positive
-rw-r--r--clippy_lints/src/excessive_precision.rs6
-rw-r--r--tests/ui/excessive_precision.rs3
2 files changed, 6 insertions, 3 deletions
diff --git a/clippy_lints/src/excessive_precision.rs b/clippy_lints/src/excessive_precision.rs
index 9f8224cd2f0..99668880f72 100644
--- a/clippy_lints/src/excessive_precision.rs
+++ b/clippy_lints/src/excessive_precision.rs
@@ -136,10 +136,10 @@ fn max_digits(fty: FloatTy) -> u32 {
 
 /// Counts the digits excluding leading zeros
 fn count_digits(s: &str) -> usize {
-    // Note that s does not contain the f32/64 suffix
+    // Note that s does not contain the f32/64 suffix, and underscores have been stripped
     s.chars()
-        .filter(|c| *c != '-' || *c != '.')
-        .take_while(|c| *c != 'e' || *c != 'E')
+        .filter(|c| *c != '-' && *c != '.')
+        .take_while(|c| *c != 'e' && *c != 'E')
         .fold(0, |count, c| {
             // leading zeros
             if c == '0' && count == 0 {
diff --git a/tests/ui/excessive_precision.rs b/tests/ui/excessive_precision.rs
index ab0412a16b5..abfdb0b3da1 100644
--- a/tests/ui/excessive_precision.rs
+++ b/tests/ui/excessive_precision.rs
@@ -67,4 +67,7 @@ fn main() {
 
     // Inferred type
     let good_inferred: f32 = 1f32 * 1_000_000_000.;
+
+    // issue #2840
+    let num = 0.000_000_000_01e-10f64;
 }