X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Fas_conversions.rs;h=4b31e16094e9f9a1b2d6b84bef58239698c62b8b;hb=9f6b5de7deaf4dc9e7917370ad09ab85dc23997c;hp=1ec3377193ec9b616d1a027b56e8e9978c23c85b;hpb=4253aa7137cb7378acc96133c787e49a345c2b3c;p=rust.git diff --git a/clippy_lints/src/as_conversions.rs b/clippy_lints/src/as_conversions.rs index 1ec3377193e..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 crate::utils::span_lint_and_help; - 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 @@ -50,6 +57,7 @@ fn check_expr(&mut self, cx: &EarlyContext<'_>, expr: &Expr) { AS_CONVERSIONS, expr.span, "using a potentially dangerous silent `as` conversion", + None, "consider using a safe wrapper for this conversion", ); }