Skip to content

Commit e1c540b

Browse files
committed
Implement the double_parens lint.
1 parent d76fa3d commit e1c540b

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

clippy_lints/src/double_parens.rs

+29-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use syntax::ast::*;
2-
use rustc::lint::{EarlyContext, LintArray, LintPass, EarlyLintPass};
2+
use rustc::lint::{EarlyContext, LintContext, LintArray, LintPass, EarlyLintPass};
33

44
/// **What it does:** Checks for unnecessary double parentheses.
55
///
@@ -30,6 +30,33 @@ impl LintPass for DoubleParens {
3030

3131
impl EarlyLintPass for DoubleParens {
3232
fn check_expr(&mut self, cx: &EarlyContext, expr: &Expr) {
33-
// insert check here.
33+
match expr.node {
34+
ExprKind::Paren(ref in_paren) => {
35+
match in_paren.node {
36+
ExprKind::Paren(_) |
37+
ExprKind::Tup(_) => {
38+
cx.span_lint(DOUBLE_PARENS, expr.span, "Consider removing unnecessary double parentheses");
39+
},
40+
_ => {},
41+
}
42+
},
43+
ExprKind::Call(_, ref params) => {
44+
if params.len() == 1 {
45+
let param = &params[0];
46+
if let ExprKind::Paren(_) = param.node {
47+
cx.span_lint(DOUBLE_PARENS, param.span, "Consider removing unnecessary double parentheses");
48+
}
49+
}
50+
},
51+
ExprKind::MethodCall(_, _, ref params) => {
52+
if params.len() == 2 {
53+
let param = &params[1];
54+
if let ExprKind::Paren(_) = param.node {
55+
cx.span_lint(DOUBLE_PARENS, param.span, "Consider removing unnecessary double parentheses");
56+
}
57+
}
58+
},
59+
_ => {},
60+
}
3461
}
3562
}

0 commit comments

Comments
 (0)