about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGeoffrey Copin <copin.geoffrey@gmail.com>2020-10-23 00:04:27 +0200
committerGeoffrey Copin <copin.geoffrey@gmail.com>2020-10-23 00:04:27 +0200
commit02f01104bfbb935ee1c3c3971ccf055173e4f82b (patch)
tree8d81ab678e6b8ecbce68cb6443441296543ea322
parente8f12d2f02644834282dec0c27710886f1e85ae6 (diff)
downloadrust-02f01104bfbb935ee1c3c3971ccf055173e4f82b.tar.gz
rust-02f01104bfbb935ee1c3c3971ccf055173e4f82b.zip
Add test case for negative literals
-rw-r--r--clippy_lints/src/types.rs2
-rw-r--r--tests/ui/unnecessary_cast_fixable.fixed3
-rw-r--r--tests/ui/unnecessary_cast_fixable.rs3
-rw-r--r--tests/ui/unnecessary_cast_fixable.stderr14
4 files changed, 20 insertions, 2 deletions
diff --git a/clippy_lints/src/types.rs b/clippy_lints/src/types.rs
index f4bb648d15a..3a088709a7e 100644
--- a/clippy_lints/src/types.rs
+++ b/clippy_lints/src/types.rs
@@ -1601,7 +1601,7 @@ impl<'tcx> LateLintPass<'tcx> for Casts {
             let (cast_from, cast_to) = (cx.typeck_results().expr_ty(ex), cx.typeck_results().expr_ty(expr));
             lint_fn_to_numeric_cast(cx, expr, ex, cast_from, cast_to);
             if let Some(lit) = get_numeric_literal(ex) {
-                let literal_str = snippet_opt(cx, lit.span).unwrap_or_default();
+                let literal_str = snippet_opt(cx, ex.span).unwrap_or_default();
 
                 if_chain! {
                     if let LitKind::Int(n, _) = lit.node;
diff --git a/tests/ui/unnecessary_cast_fixable.fixed b/tests/ui/unnecessary_cast_fixable.fixed
index 54853f4b8a2..2a13469b146 100644
--- a/tests/ui/unnecessary_cast_fixable.fixed
+++ b/tests/ui/unnecessary_cast_fixable.fixed
@@ -29,4 +29,7 @@ fn main() {
     0.5_f32;
 
     1.0 as u16;
+
+    -1_i32;
+    -1.0_f32;
 }
diff --git a/tests/ui/unnecessary_cast_fixable.rs b/tests/ui/unnecessary_cast_fixable.rs
index 8da3d947702..65ddd3c7fbf 100644
--- a/tests/ui/unnecessary_cast_fixable.rs
+++ b/tests/ui/unnecessary_cast_fixable.rs
@@ -29,4 +29,7 @@ fn main() {
     0.5 as f32;
 
     1.0 as u16;
+
+    -1 as i32;
+    -1.0 as f32;
 }
diff --git a/tests/ui/unnecessary_cast_fixable.stderr b/tests/ui/unnecessary_cast_fixable.stderr
index 28fb9540afc..26b23e315e3 100644
--- a/tests/ui/unnecessary_cast_fixable.stderr
+++ b/tests/ui/unnecessary_cast_fixable.stderr
@@ -60,5 +60,17 @@ error: casting float literal to `f32` is unnecessary
 LL |     0.5 as f32;
    |     ^^^^^^^^^^ help: try: `0.5_f32`
 
-error: aborting due to 10 previous errors
+error: casting integer literal to `i32` is unnecessary
+  --> $DIR/unnecessary_cast_fixable.rs:33:5
+   |
+LL |     -1 as i32;
+   |     ^^^^^^^^^ help: try: `-1_i32`
+
+error: casting float literal to `f32` is unnecessary
+  --> $DIR/unnecessary_cast_fixable.rs:34:5
+   |
+LL |     -1.0 as f32;
+   |     ^^^^^^^^^^^ help: try: `-1.0_f32`
+
+error: aborting due to 12 previous errors