diff options
| author | bors <bors@rust-lang.org> | 2022-06-22 22:18:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-06-22 22:18:08 +0000 |
| commit | 3d366fc2d8ab854adab6936c9d5d7b2cf929ae96 (patch) | |
| tree | 36049a9fa8154e6888fd39efc657d15d67c0b517 | |
| parent | f9fea1737e34da3afedf4a0d35ea4866ce7f87a1 (diff) | |
| parent | 6fc84d4da39942857e243cfe951bbefbdba5250b (diff) | |
| download | rust-3d366fc2d8ab854adab6936c9d5d7b2cf929ae96.tar.gz rust-3d366fc2d8ab854adab6936c9d5d7b2cf929ae96.zip | |
Auto merge of #9026 - hellow554:neg_multiply_precedence, r=xFrednet
put parentheses around neg_multiply suggestion if needed *Please write a short comment explaining your change (or "none" for internal only changes)* changelog: [`neg_multiply`]: put parentheses around suggestion if needed
| -rw-r--r-- | clippy_lints/src/neg_multiply.rs | 9 | ||||
| -rw-r--r-- | tests/ui/neg_multiply.fixed | 3 | ||||
| -rw-r--r-- | tests/ui/neg_multiply.rs | 3 | ||||
| -rw-r--r-- | tests/ui/neg_multiply.stderr | 14 |
4 files changed, 27 insertions, 2 deletions
diff --git a/clippy_lints/src/neg_multiply.rs b/clippy_lints/src/neg_multiply.rs index ce6bb38b7c0..b087cfb36b1 100644 --- a/clippy_lints/src/neg_multiply.rs +++ b/clippy_lints/src/neg_multiply.rs @@ -1,7 +1,9 @@ use clippy_utils::consts::{self, Constant}; use clippy_utils::diagnostics::span_lint_and_sugg; use clippy_utils::source::snippet_with_applicability; +use clippy_utils::sugg::has_enclosing_paren; use if_chain::if_chain; +use rustc_ast::util::parser::PREC_PREFIX; use rustc_errors::Applicability; use rustc_hir::{BinOpKind, Expr, ExprKind, UnOp}; use rustc_lint::{LateContext, LateLintPass}; @@ -58,7 +60,12 @@ fn check_mul(cx: &LateContext<'_>, span: Span, lit: &Expr<'_>, exp: &Expr<'_>) { then { let mut applicability = Applicability::MachineApplicable; - let suggestion = format!("-{}", snippet_with_applicability(cx, exp.span, "..", &mut applicability)); + let snip = snippet_with_applicability(cx, exp.span, "..", &mut applicability); + let suggestion = if exp.precedence().order() < PREC_PREFIX && !has_enclosing_paren(&snip) { + format!("-({})", snip) + } else { + format!("-{}", snip) + }; span_lint_and_sugg( cx, NEG_MULTIPLY, diff --git a/tests/ui/neg_multiply.fixed b/tests/ui/neg_multiply.fixed index 35af9d6ae31..58ab9e85678 100644 --- a/tests/ui/neg_multiply.fixed +++ b/tests/ui/neg_multiply.fixed @@ -38,6 +38,9 @@ fn main() { 0xcafe | -0xff00; + -(3_usize as i32); + -(3_usize as i32); + -1 * -1; // should be ok X * -1; // should be ok diff --git a/tests/ui/neg_multiply.rs b/tests/ui/neg_multiply.rs index 7dbdb0906ce..581290dc72e 100644 --- a/tests/ui/neg_multiply.rs +++ b/tests/ui/neg_multiply.rs @@ -38,6 +38,9 @@ fn main() { 0xcafe | 0xff00 * -1; + 3_usize as i32 * -1; + (3_usize as i32) * -1; + -1 * -1; // should be ok X * -1; // should be ok diff --git a/tests/ui/neg_multiply.stderr b/tests/ui/neg_multiply.stderr index dbf8fb36938..388ef29eb85 100644 --- a/tests/ui/neg_multiply.stderr +++ b/tests/ui/neg_multiply.stderr @@ -36,5 +36,17 @@ error: this multiplication by -1 can be written more succinctly LL | 0xcafe | 0xff00 * -1; | ^^^^^^^^^^^ help: consider using: `-0xff00` -error: aborting due to 6 previous errors +error: this multiplication by -1 can be written more succinctly + --> $DIR/neg_multiply.rs:41:5 + | +LL | 3_usize as i32 * -1; + | ^^^^^^^^^^^^^^^^^^^ help: consider using: `-(3_usize as i32)` + +error: this multiplication by -1 can be written more succinctly + --> $DIR/neg_multiply.rs:42:5 + | +LL | (3_usize as i32) * -1; + | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `-(3_usize as i32)` + +error: aborting due to 8 previous errors |
