X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Fas_conversions.rs;h=4b31e16094e9f9a1b2d6b84bef58239698c62b8b;hb=9f6b5de7deaf4dc9e7917370ad09ab85dc23997c;hp=b4b02510ce7d65cc0223293f577949a3a6ccf6a6;hpb=dd06c06183e634b000198958c4ba9dc6d1f0616d;p=rust.git diff --git a/clippy_lints/src/as_conversions.rs b/clippy_lints/src/as_conversions.rs index b4b02510ce7..4b31e16094e 100644 --- a/clippy_lints/src/as_conversions.rs +++ b/clippy_lints/src/as_conversions.rs @@ -1,13 +1,20 @@ -use rustc::lint::in_external_macro; +use clippy_utils::diagnostics::span_lint_and_help; +use rustc_ast::ast::{Expr, ExprKind}; use rustc_lint::{EarlyContext, EarlyLintPass, LintContext}; +use rustc_middle::lint::in_external_macro; use rustc_session::{declare_lint_pass, declare_tool_lint}; -use syntax::ast::*; - -use crate::utils::span_help_and_lint; declare_clippy_lint! { /// **What it does:** Checks for usage of `as` conversions. /// + /// Note that this lint is specialized in linting *every single* use of `as` + /// regardless of whether good alternatives exist or not. + /// If you want more precise lints for `as`, please consider using these separate lints: + /// `unnecessary_cast`, `cast_lossless/possible_truncation/possible_wrap/precision_loss/sign_loss`, + /// `fn_to_numeric_cast(_with_truncation)`, `char_lit_as_u8`, `ref_to_mut` and `ptr_as_ptr`. + /// There is a good explanation the reason why this lint should work in this way and how it is useful + /// [in this issue](https://github.com/rust-lang/rust-clippy/issues/5122). + /// /// **Why is this bad?** `as` conversions will perform many kinds of /// conversions, including silently lossy conversions and dangerous coercions. /// There are cases when it makes sense to use `as`, so the lint is @@ -45,11 +52,12 @@ fn check_expr(&mut self, cx: &EarlyContext<'_>, expr: &Expr) { } if let ExprKind::Cast(_, _) = expr.kind { - span_help_and_lint( + span_lint_and_help( cx, AS_CONVERSIONS, expr.span, "using a potentially dangerous silent `as` conversion", + None, "consider using a safe wrapper for this conversion", ); }