about summary refs log tree commit diff
path: root/clippy_lints
diff options
context:
space:
mode:
authorKisaragi Marine <kisaragi.effective@gmail.com>2023-11-28 00:27:51 +0900
committerKisaragi Marine <kisaragi.effective@gmail.com>2023-11-28 00:27:51 +0900
commit33182495ac8045af2b20210dd628690c52332e44 (patch)
tree96afacc6936b10039fbfef8c57441da46f125972 /clippy_lints
parent40b6aa0e8622e54dbea4c99869d7d62b4313d0eb (diff)
don't add paren on occurrences that is in call args
Diffstat (limited to 'clippy_lints')
-rw-r--r--clippy_lints/src/redundant_closure_call.rs21
1 files changed, 14 insertions, 7 deletions
diff --git a/clippy_lints/src/redundant_closure_call.rs b/clippy_lints/src/redundant_closure_call.rs
index efdd78a1c92..17a17890be7 100644
--- a/clippy_lints/src/redundant_closure_call.rs
+++ b/clippy_lints/src/redundant_closure_call.rs
@@ -5,7 +5,7 @@ use clippy_utils::sugg::Sugg;
 use rustc_errors::Applicability;
 use rustc_hir as hir;
 use rustc_hir::intravisit::{Visitor as HirVisitor, Visitor};
-use rustc_hir::{intravisit as hir_visit, CoroutineKind, CoroutineSource};
+use rustc_hir::{intravisit as hir_visit, CoroutineKind, CoroutineSource, Node};
 use rustc_lint::{LateContext, LateLintPass};
 use rustc_middle::hir::nested_filter;
 use rustc_middle::lint::in_external_macro;
@@ -176,12 +176,19 @@ impl<'tcx> LateLintPass<'tcx> for RedundantClosureCall {
                             hint = hint.asyncify();
                         }
 
-                        diag.span_suggestion(
-                            full_expr.span,
-                            "try doing something like",
-                            hint.maybe_par(),
-                            applicability,
-                        );
+                        let is_in_fn_call_arg = clippy_utils::get_parent_node(cx.tcx, expr.hir_id)
+                            .map(|x| match x {
+                                Node::Expr(expr) => matches!(expr.kind, hir::ExprKind::Call(_, _)),
+                                _ => false,
+                            })
+                            .unwrap_or(false);
+
+                        // avoid clippy::double_parens
+                        if !is_in_fn_call_arg {
+                            hint = hint.maybe_par()
+                        };
+
+                        diag.span_suggestion(full_expr.span, "try doing something like", hint, applicability);
                     }
                 },
             );