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};
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,