@@ -40,35 +40,29 @@ declare_lint_pass!(DoubleParens => [DOUBLE_PARENS]);
4040
4141impl 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