Skip to content

Commit 33cd266

Browse files
committed
Update unnecessary_cast.rs
1 parent c608cb3 commit 33cd266

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

clippy_lints/src/casts/unnecessary_cast.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

@@ -258,17 +258,8 @@ fn is_cast_from_ty_alias<'tcx>(cx: &LateContext<'tcx>, expr: impl Visitable<'tcx
258258
// consider this a type alias as well?
259259
if !snippet
260260
.split("->")
261-
.skip(0)
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-
})
261+
.skip(1)
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

Comments
 (0)