use syntax::ast::*;
-use rustc::lint::{EarlyContext, LintArray, LintPass, EarlyLintPass};
+use rustc::lint::{EarlyContext, LintContext, LintArray, LintPass, EarlyLintPass};
/// **What it does:** Checks for unnecessary double parentheses.
///
impl EarlyLintPass for DoubleParens {
fn check_expr(&mut self, cx: &EarlyContext, expr: &Expr) {
- // insert check here.
+ match expr.node {
+ ExprKind::Paren(ref in_paren) => {
+ match in_paren.node {
+ ExprKind::Paren(_) |
+ ExprKind::Tup(_) => {
+ cx.span_lint(DOUBLE_PARENS, expr.span, "Consider removing unnecessary double parentheses");
+ },
+ _ => {},
+ }
+ },
+ ExprKind::Call(_, ref params) => {
+ if params.len() == 1 {
+ let param = ¶ms[0];
+ if let ExprKind::Paren(_) = param.node {
+ cx.span_lint(DOUBLE_PARENS, param.span, "Consider removing unnecessary double parentheses");
+ }
+ }
+ },
+ ExprKind::MethodCall(_, _, ref params) => {
+ if params.len() == 2 {
+ let param = ¶ms[1];
+ if let ExprKind::Paren(_) = param.node {
+ cx.span_lint(DOUBLE_PARENS, param.span, "Consider removing unnecessary double parentheses");
+ }
+ }
+ },
+ _ => {},
+ }
}
}