about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/clippy/clippy_lints/src/transmute.rs34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/tools/clippy/clippy_lints/src/transmute.rs b/src/tools/clippy/clippy_lints/src/transmute.rs
index d5b694ce311..d6b1a5df71f 100644
--- a/src/tools/clippy/clippy_lints/src/transmute.rs
+++ b/src/tools/clippy/clippy_lints/src/transmute.rs
@@ -626,21 +626,25 @@ impl<'tcx> LateLintPass<'tcx> for Transmute {
                             );
                         }
                     },
-                    (_, _) if can_be_expressed_as_pointer_cast(cx, e, from_ty, to_ty) => {
-                        span_lint(
-                            cx,
-                            TRANSMUTES_EXPRESSIBLE_AS_PTR_CASTS,
-                            e.span,
-                            &format!(
-                                "transmute from `{}` to `{}` which could be expressed as a pointer cast instead",
-                                from_ty,
-                                to_ty
-                            )
-                        );
-                    },
-                    _ => {
-                        return
-                    },
+                    _ => {},
+                }
+                if can_be_expressed_as_pointer_cast(cx, e, from_ty, to_ty) {
+                    span_lint_and_then(
+                        cx,
+                        TRANSMUTES_EXPRESSIBLE_AS_PTR_CASTS,
+                        e.span,
+                        &format!(
+                            "transmute from `{}` to `{}` which could be expressed as a pointer cast instead",
+                            from_ty,
+                            to_ty
+                        ),
+                        |diag| {
+                            if let Some(arg) = sugg::Sugg::hir_opt(cx, &args[0]) {
+                                let sugg = format!("{} as {}", arg, to_ty);
+                                diag.span_suggestion(e.span, "try", sugg, Applicability::Unspecified);
+                            }
+                        }
+                    )
                 }
             }
         }