@@ -85,11 +85,6 @@ pub(super) fn check<'tcx>(
8585 }
8686 }
8787
88- // skip cast of fn call that returns type alias
89- if let ExprKind :: Cast ( inner, ..) = expr. kind && is_cast_from_ty_alias ( cx, inner, cast_from) {
90- return false ;
91- }
92-
9388 // skip cast to non-primitive type
9489 if_chain ! {
9590 if let ExprKind :: Cast ( _, cast_to) = expr. kind;
@@ -101,6 +96,11 @@ pub(super) fn check<'tcx>(
10196 }
10297 }
10398
99+ // skip cast of fn call that returns type alias
100+ if let ExprKind :: Cast ( inner, ..) = expr. kind && is_cast_from_ty_alias ( cx, inner, cast_from) {
101+ return false ;
102+ }
103+
104104 if let Some ( lit) = get_numeric_literal ( cast_expr) {
105105 let literal_str = & cast_str;
106106
@@ -259,16 +259,7 @@ fn is_cast_from_ty_alias<'tcx>(cx: &LateContext<'tcx>, expr: impl Visitable<'tcx
259259 if !snippet
260260 . split ( "->" )
261261 . skip ( 1 )
262- . map ( |s| {
263- s. trim ( ) == cast_from. to_string ( )
264- || s. trim ( ) . contains ( & format ! ( "::{cast_from}" ) )
265- || s. split ( "where" ) . any ( |ty| {
266- ty. trim ( ) == cast_from. to_string ( )
267- || ty. trim ( ) == cast_from. to_string ( )
268- // Fully qualified path, or something silly like `::u32`
269- || s. trim ( ) . contains ( & format ! ( "::{cast_from}" ) )
270- } )
271- } )
262+ . map ( |s| snippet_eq_ty ( s, cast_from) || s. split ( "where" ) . any ( |ty| snippet_eq_ty ( ty, cast_from) ) )
272263 . any ( |a| a)
273264 {
274265 return ControlFlow :: Break ( ( ) ) ;
@@ -295,3 +286,7 @@ fn is_cast_from_ty_alias<'tcx>(cx: &LateContext<'tcx>, expr: impl Visitable<'tcx
295286 } )
296287 . is_some ( )
297288}
289+
290+ fn snippet_eq_ty ( snippet : & str , ty : Ty < ' _ > ) -> bool {
291+ snippet. trim ( ) == ty. to_string ( ) || snippet. trim ( ) . contains ( & format ! ( "::{ty}" ) )
292+ }
0 commit comments