1- use clippy_utils:: diagnostics:: span_lint_and_sugg;
2- use rustc_ast:: ast:: { Expr , ExprKind , LitFloatType , LitKind } ;
1+ use clippy_utils:: { diagnostics:: span_lint_and_sugg, source :: snippet } ;
2+ use rustc_ast:: ast:: { Expr , ExprKind , LitKind } ;
33use rustc_errors:: Applicability ;
44use rustc_lint:: { EarlyContext , EarlyLintPass } ;
55use rustc_session:: { declare_lint_pass, declare_tool_lint} ;
@@ -29,19 +29,15 @@ declare_clippy_lint! {
2929}
3030declare_lint_pass ! ( UnusedRounding => [ UNUSED_ROUNDING ] ) ;
3131
32- fn is_useless_rounding ( expr : & Expr ) -> Option < ( & str , String ) > {
32+ fn is_useless_rounding < ' a > ( cx : & EarlyContext < ' a > , expr : & ' a Expr ) -> Option < ( & ' a str , String ) > {
3333 if let ExprKind :: MethodCall ( name_ident, receiver, _, _) = & expr. kind
3434 && let method_name = name_ident. ident . name . as_str ( )
3535 && ( method_name == "ceil" || method_name == "round" || method_name == "floor" )
3636 && let ExprKind :: Lit ( spanned) = & receiver. kind
37- && let LitKind :: Float ( symbol, ty ) = spanned. kind {
37+ && let LitKind :: Float ( symbol, _ ) = spanned. kind {
3838 let f = symbol. as_str ( ) . parse :: < f64 > ( ) . unwrap ( ) ;
39- let f_str = spanned. token_lit . symbol . to_string ( ) + if let LitFloatType :: Suffixed ( ty) = ty {
40- ty. name_str ( )
41- } else {
42- ""
43- } ;
4439 if f. fract ( ) == 0.0 {
40+ let f_str = snippet ( cx, receiver. span , ".." ) . to_string ( ) ;
4541 Some ( ( method_name, f_str) )
4642 } else {
4743 None
@@ -53,7 +49,7 @@ fn is_useless_rounding(expr: &Expr) -> Option<(&str, String)> {
5349
5450impl EarlyLintPass for UnusedRounding {
5551 fn check_expr ( & mut self , cx : & EarlyContext < ' _ > , expr : & Expr ) {
56- if let Some ( ( method_name, float) ) = is_useless_rounding ( expr) {
52+ if let Some ( ( method_name, float) ) = is_useless_rounding ( cx , expr) {
5753 span_lint_and_sugg (
5854 cx,
5955 UNUSED_ROUNDING ,
0 commit comments