@@ -40,35 +40,29 @@ declare_lint_pass!(DoubleParens => [DOUBLE_PARENS]);
40
40
41
41
impl EarlyLintPass for DoubleParens {
42
42
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
63
50
} ,
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
70
56
} ,
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
+ ) ;
72
66
}
73
67
}
74
68
}
0 commit comments