Skip to content

Commit 0a25df8

Browse files
committed
Refactor double_parens:
* Merge control flow before emission * Check the AST before the macro check
1 parent 0c9016a commit 0a25df8

File tree

1 file changed

+21
-27
lines changed

1 file changed

+21
-27
lines changed

clippy_lints/src/double_parens.rs

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -40,35 +40,29 @@ declare_lint_pass!(DoubleParens => [DOUBLE_PARENS]);
4040

4141
impl EarlyLintPass for DoubleParens {
4242
fn check_expr(&mut self, cx: &EarlyContext<'_>, expr: &Expr) {
43-
if expr.span.from_expansion() {
44-
return;
45-
}
46-
47-
let msg: &str = "consider removing unnecessary double parentheses";
48-
49-
match expr.kind {
50-
ExprKind::Paren(ref in_paren) => match in_paren.kind {
51-
ExprKind::Paren(_) | ExprKind::Tup(_) => {
52-
span_lint(cx, DOUBLE_PARENS, expr.span, msg);
53-
},
54-
_ => {},
55-
},
56-
ExprKind::Call(_, ref params) => {
57-
if params.len() == 1 {
58-
let param = &params[0];
59-
if let ExprKind::Paren(_) = param.kind {
60-
span_lint(cx, DOUBLE_PARENS, param.span, msg);
61-
}
62-
}
43+
let span = match &expr.kind {
44+
ExprKind::Paren(in_paren) if matches!(in_paren.kind, ExprKind::Paren(_) | ExprKind::Tup(_)) => expr.span,
45+
ExprKind::Call(_, params)
46+
if let [param] = &**params
47+
&& let ExprKind::Paren(_) = param.kind =>
48+
{
49+
param.span
6350
},
64-
ExprKind::MethodCall(ref call) => {
65-
if let [ref arg] = call.args[..] {
66-
if let ExprKind::Paren(_) = arg.kind {
67-
span_lint(cx, DOUBLE_PARENS, arg.span, msg);
68-
}
69-
}
51+
ExprKind::MethodCall(call)
52+
if let [arg] = &*call.args
53+
&& let ExprKind::Paren(_) = arg.kind =>
54+
{
55+
arg.span
7056
},
71-
_ => {},
57+
_ => return,
58+
};
59+
if !expr.span.from_expansion() {
60+
span_lint(
61+
cx,
62+
DOUBLE_PARENS,
63+
span,
64+
"consider removing unnecessary double parentheses",
65+
);
7266
}
7367
}
7468
}

0 commit comments

Comments
 (0)