X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Fdouble_parens.rs;h=d08981e8badc7e482b8d3c97a608d16806deec53;hb=920cdb59e1edf2c4cb2f266fa521f12c1b97a499;hp=42d6720d96c5d1d4034644c5b9b04c3fba165121;hpb=8e0de3d12046dd349e21e0cb09fd06b07d3230d9;p=rust.git diff --git a/clippy_lints/src/double_parens.rs b/clippy_lints/src/double_parens.rs index 42d6720d96c..d08981e8bad 100644 --- a/clippy_lints/src/double_parens.rs +++ b/clippy_lints/src/double_parens.rs @@ -1,54 +1,72 @@ +use crate::utils::span_lint; +use rustc_lint::{EarlyContext, EarlyLintPass}; +use rustc_session::{declare_lint_pass, declare_tool_lint}; use syntax::ast::*; -use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintContext, LintPass}; -use rustc::{declare_tool_lint, lint_array}; -/// **What it does:** Checks for unnecessary double parentheses. -/// -/// **Why is this bad?** This makes code harder to read and might indicate a -/// mistake. -/// -/// **Known problems:** None. -/// -/// **Example:** -/// ```rust -/// ((0)) -/// foo((0)) -/// ((1, 2)) -/// ``` declare_clippy_lint! { + /// **What it does:** Checks for unnecessary double parentheses. + /// + /// **Why is this bad?** This makes code harder to read and might indicate a + /// mistake. + /// + /// **Known problems:** None. + /// + /// **Example:** + /// ```rust + /// # fn foo(bar: usize) {} + /// ((0)); + /// foo((0)); + /// ((1, 2)); + /// ``` pub DOUBLE_PARENS, complexity, "Warn on unnecessary double parentheses" } -#[derive(Copy, Clone)] -pub struct DoubleParens; - -impl LintPass for DoubleParens { - fn get_lints(&self) -> LintArray { - lint_array!(DOUBLE_PARENS) - } -} +declare_lint_pass!(DoubleParens => [DOUBLE_PARENS]); impl EarlyLintPass for DoubleParens { fn check_expr(&mut self, cx: &EarlyContext<'_>, expr: &Expr) { - match expr.node { - ExprKind::Paren(ref in_paren) => match in_paren.node { + if expr.span.from_expansion() { + return; + } + + match expr.kind { + ExprKind::Paren(ref in_paren) => match in_paren.kind { ExprKind::Paren(_) | ExprKind::Tup(_) => { - cx.span_lint(DOUBLE_PARENS, expr.span, "Consider removing unnecessary double parentheses"); + span_lint( + cx, + 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::Call(_, ref params) => { + if params.len() == 1 { + let param = ¶ms[0]; + if let ExprKind::Paren(_) = param.kind { + span_lint( + cx, + 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"); + ExprKind::MethodCall(_, ref params) => { + if params.len() == 2 { + let param = ¶ms[1]; + if let ExprKind::Paren(_) = param.kind { + span_lint( + cx, + DOUBLE_PARENS, + param.span, + "Consider removing unnecessary double parentheses", + ); + } } }, _ => {},