11use clippy_utils:: diagnostics:: span_lint_and_sugg;
22use clippy_utils:: source:: snippet_with_applicability;
3- use rustc_ast:: ast:: { BinOpKind , Expr , ExprKind , MethodCall , UnOp } ;
4- use rustc_ast:: token;
3+ use rustc_ast:: ast:: { BinOpKind , Expr , ExprKind } ;
54use rustc_errors:: Applicability ;
65use rustc_lint:: { EarlyContext , EarlyLintPass } ;
76use rustc_session:: declare_lint_pass;
87use rustc_span:: source_map:: Spanned ;
98
10- const ALLOWED_ODD_FUNCTIONS : [ & str ; 14 ] = [
11- "asin" ,
12- "asinh" ,
13- "atan" ,
14- "atanh" ,
15- "cbrt" ,
16- "fract" ,
17- "round" ,
18- "signum" ,
19- "sin" ,
20- "sinh" ,
21- "tan" ,
22- "tanh" ,
23- "to_degrees" ,
24- "to_radians" ,
25- ] ;
26-
279declare_clippy_lint ! {
2810 /// ### What it does
2911 /// Checks for operations where precedence may be unclear
@@ -41,7 +23,6 @@ declare_clippy_lint! {
4123 ///
4224 /// ### Example
4325 /// * `1 << 2 + 3` equals 32, while `(1 << 2) + 3` equals 7
44- /// * `-1i32.abs()` equals -1, while `(-1i32).abs()` equals 1
4526 #[ clippy:: version = "pre 1.29.0" ]
4627 pub PRECEDENCE ,
4728 complexity,
@@ -104,38 +85,6 @@ impl EarlyLintPass for Precedence {
10485 ( false , false ) => ( ) ,
10586 }
10687 }
107-
108- if let ExprKind :: Unary ( UnOp :: Neg , operand) = & expr. kind {
109- let mut arg = operand;
110-
111- let mut all_odd = true ;
112- while let ExprKind :: MethodCall ( box MethodCall { seg, receiver, .. } ) = & arg. kind {
113- let seg_str = seg. ident . name . as_str ( ) ;
114- all_odd &= ALLOWED_ODD_FUNCTIONS
115- . iter ( )
116- . any ( |odd_function| * * odd_function == * seg_str) ;
117- arg = receiver;
118- }
119-
120- if !all_odd
121- && let ExprKind :: Lit ( lit) = & arg. kind
122- && let token:: LitKind :: Integer | token:: LitKind :: Float = & lit. kind
123- {
124- let mut applicability = Applicability :: MachineApplicable ;
125- span_lint_and_sugg (
126- cx,
127- PRECEDENCE ,
128- expr. span ,
129- "unary minus has lower precedence than method call" ,
130- "consider adding parentheses to clarify your intent" ,
131- format ! (
132- "-({})" ,
133- snippet_with_applicability( cx, operand. span, ".." , & mut applicability)
134- ) ,
135- applicability,
136- ) ;
137- }
138- }
13988 }
14089}
14190
0 commit comments