Make use of some existing diagnostic items
This commit is contained in:
@@ -9,6 +9,7 @@ use rustc_lint::{LateContext, LateLintPass};
|
|||||||
use rustc_middle::lint::in_external_macro;
|
use rustc_middle::lint::in_external_macro;
|
||||||
use rustc_session::{declare_lint_pass, declare_tool_lint};
|
use rustc_session::{declare_lint_pass, declare_tool_lint};
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
use rustc_span::symbol::sym;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
/// **What it does:** Checks for `mem::replace()` on an `Option` with
|
/// **What it does:** Checks for `mem::replace()` on an `Option` with
|
||||||
@@ -141,7 +142,7 @@ fn check_replace_with_uninit(cx: &LateContext<'_, '_>, src: &Expr<'_>, expr_span
|
|||||||
if let ExprKind::Path(ref repl_func_qpath) = repl_func.kind;
|
if let ExprKind::Path(ref repl_func_qpath) = repl_func.kind;
|
||||||
if let Some(repl_def_id) = cx.tables.qpath_res(repl_func_qpath, repl_func.hir_id).opt_def_id();
|
if let Some(repl_def_id) = cx.tables.qpath_res(repl_func_qpath, repl_func.hir_id).opt_def_id();
|
||||||
then {
|
then {
|
||||||
if match_def_path(cx, repl_def_id, &paths::MEM_UNINITIALIZED) {
|
if cx.tcx.is_diagnostic_item(sym::mem_uninitialized, repl_def_id) {
|
||||||
span_lint_and_help(
|
span_lint_and_help(
|
||||||
cx,
|
cx,
|
||||||
MEM_REPLACE_WITH_UNINIT,
|
MEM_REPLACE_WITH_UNINIT,
|
||||||
@@ -149,7 +150,7 @@ fn check_replace_with_uninit(cx: &LateContext<'_, '_>, src: &Expr<'_>, expr_span
|
|||||||
"replacing with `mem::uninitialized()`",
|
"replacing with `mem::uninitialized()`",
|
||||||
"consider using the `take_mut` crate instead",
|
"consider using the `take_mut` crate instead",
|
||||||
);
|
);
|
||||||
} else if match_def_path(cx, repl_def_id, &paths::MEM_ZEROED) &&
|
} else if cx.tcx.is_diagnostic_item(sym::mem_zeroed, repl_def_id) &&
|
||||||
!cx.tables.expr_ty(src).is_primitive() {
|
!cx.tables.expr_ty(src).is_primitive() {
|
||||||
span_lint_and_help(
|
span_lint_and_help(
|
||||||
cx,
|
cx,
|
||||||
|
|||||||
@@ -1998,9 +1998,9 @@ fn lint_clone_on_ref_ptr(cx: &LateContext<'_, '_>, expr: &hir::Expr<'_>, arg: &h
|
|||||||
let obj_ty = walk_ptrs_ty(cx.tables.expr_ty(arg));
|
let obj_ty = walk_ptrs_ty(cx.tables.expr_ty(arg));
|
||||||
|
|
||||||
if let ty::Adt(_, subst) = obj_ty.kind {
|
if let ty::Adt(_, subst) = obj_ty.kind {
|
||||||
let caller_type = if match_type(cx, obj_ty, &paths::RC) {
|
let caller_type = if is_type_diagnostic_item(cx, obj_ty, sym::Rc) {
|
||||||
"Rc"
|
"Rc"
|
||||||
} else if match_type(cx, obj_ty, &paths::ARC) {
|
} else if is_type_diagnostic_item(cx, obj_ty, sym::Arc) {
|
||||||
"Arc"
|
"Arc"
|
||||||
} else if match_type(cx, obj_ty, &paths::WEAK_RC) || match_type(cx, obj_ty, &paths::WEAK_ARC) {
|
} else if match_type(cx, obj_ty, &paths::WEAK_RC) || match_type(cx, obj_ty, &paths::WEAK_ARC) {
|
||||||
"Weak"
|
"Weak"
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
//! See <https://github.com/rust-lang/rust-clippy/issues/5393> for more information.
|
//! See <https://github.com/rust-lang/rust-clippy/issues/5393> for more information.
|
||||||
|
|
||||||
pub const ANY_TRAIT: [&str; 3] = ["std", "any", "Any"];
|
pub const ANY_TRAIT: [&str; 3] = ["std", "any", "Any"];
|
||||||
pub const ARC: [&str; 3] = ["alloc", "sync", "Arc"];
|
|
||||||
pub const ARC_PTR_EQ: [&str; 4] = ["alloc", "sync", "Arc", "ptr_eq"];
|
pub const ARC_PTR_EQ: [&str; 4] = ["alloc", "sync", "Arc", "ptr_eq"];
|
||||||
pub const ASMUT_TRAIT: [&str; 3] = ["core", "convert", "AsMut"];
|
pub const ASMUT_TRAIT: [&str; 3] = ["core", "convert", "AsMut"];
|
||||||
pub const ASREF_TRAIT: [&str; 3] = ["core", "convert", "AsRef"];
|
pub const ASREF_TRAIT: [&str; 3] = ["core", "convert", "AsRef"];
|
||||||
@@ -62,8 +61,6 @@ pub const MEM_FORGET: [&str; 3] = ["core", "mem", "forget"];
|
|||||||
pub const MEM_MAYBEUNINIT: [&str; 4] = ["core", "mem", "maybe_uninit", "MaybeUninit"];
|
pub const MEM_MAYBEUNINIT: [&str; 4] = ["core", "mem", "maybe_uninit", "MaybeUninit"];
|
||||||
pub const MEM_MAYBEUNINIT_UNINIT: [&str; 5] = ["core", "mem", "maybe_uninit", "MaybeUninit", "uninit"];
|
pub const MEM_MAYBEUNINIT_UNINIT: [&str; 5] = ["core", "mem", "maybe_uninit", "MaybeUninit", "uninit"];
|
||||||
pub const MEM_REPLACE: [&str; 3] = ["core", "mem", "replace"];
|
pub const MEM_REPLACE: [&str; 3] = ["core", "mem", "replace"];
|
||||||
pub const MEM_UNINITIALIZED: [&str; 3] = ["core", "mem", "uninitialized"];
|
|
||||||
pub const MEM_ZEROED: [&str; 3] = ["core", "mem", "zeroed"];
|
|
||||||
pub const MUTEX: [&str; 4] = ["std", "sync", "mutex", "Mutex"];
|
pub const MUTEX: [&str; 4] = ["std", "sync", "mutex", "Mutex"];
|
||||||
pub const MUTEX_GUARD: [&str; 4] = ["std", "sync", "mutex", "MutexGuard"];
|
pub const MUTEX_GUARD: [&str; 4] = ["std", "sync", "mutex", "MutexGuard"];
|
||||||
pub const OPEN_OPTIONS: [&str; 3] = ["std", "fs", "OpenOptions"];
|
pub const OPEN_OPTIONS: [&str; 3] = ["std", "fs", "OpenOptions"];
|
||||||
|
|||||||
Reference in New Issue
Block a user