Specify an MSRV of 1.63.0 for assigning_clones
This commit is contained in:
parent
b5dcaae844
commit
21a97f0192
@ -23,6 +23,7 @@ macro_rules! msrv_aliases {
|
|||||||
1,70,0 { OPTION_RESULT_IS_VARIANT_AND, BINARY_HEAP_RETAIN }
|
1,70,0 { OPTION_RESULT_IS_VARIANT_AND, BINARY_HEAP_RETAIN }
|
||||||
1,68,0 { PATH_MAIN_SEPARATOR_STR }
|
1,68,0 { PATH_MAIN_SEPARATOR_STR }
|
||||||
1,65,0 { LET_ELSE, POINTER_CAST_CONSTNESS }
|
1,65,0 { LET_ELSE, POINTER_CAST_CONSTNESS }
|
||||||
|
1,63,0 { ASSIGNING_CLONES }
|
||||||
1,62,0 { BOOL_THEN_SOME, DEFAULT_ENUM_ATTRIBUTE }
|
1,62,0 { BOOL_THEN_SOME, DEFAULT_ENUM_ATTRIBUTE }
|
||||||
1,59,0 { THREAD_LOCAL_INITIALIZER_CAN_BE_MADE_CONST }
|
1,59,0 { THREAD_LOCAL_INITIALIZER_CAN_BE_MADE_CONST }
|
||||||
1,58,0 { FORMAT_ARGS_CAPTURE, PATTERN_TRAIT_CHAR_ARRAY }
|
1,58,0 { FORMAT_ARGS_CAPTURE, PATTERN_TRAIT_CHAR_ARRAY }
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use clippy_config::msrvs::{self, Msrv};
|
||||||
use clippy_utils::diagnostics::span_lint_and_then;
|
use clippy_utils::diagnostics::span_lint_and_then;
|
||||||
use clippy_utils::macros::HirNode;
|
use clippy_utils::macros::HirNode;
|
||||||
use clippy_utils::sugg::Sugg;
|
use clippy_utils::sugg::Sugg;
|
||||||
@ -6,7 +7,7 @@
|
|||||||
use rustc_hir::{self as hir, Expr, ExprKind, Node};
|
use rustc_hir::{self as hir, Expr, ExprKind, Node};
|
||||||
use rustc_lint::{LateContext, LateLintPass};
|
use rustc_lint::{LateContext, LateLintPass};
|
||||||
use rustc_middle::ty::{self, Instance, Mutability};
|
use rustc_middle::ty::{self, Instance, Mutability};
|
||||||
use rustc_session::declare_lint_pass;
|
use rustc_session::impl_lint_pass;
|
||||||
use rustc_span::def_id::DefId;
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_span::symbol::sym;
|
use rustc_span::symbol::sym;
|
||||||
use rustc_span::ExpnKind;
|
use rustc_span::ExpnKind;
|
||||||
@ -49,10 +50,26 @@
|
|||||||
perf,
|
perf,
|
||||||
"assigning the result of cloning may be inefficient"
|
"assigning the result of cloning may be inefficient"
|
||||||
}
|
}
|
||||||
declare_lint_pass!(AssigningClones => [ASSIGNING_CLONES]);
|
|
||||||
|
pub struct AssigningClones {
|
||||||
|
msrv: Msrv,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AssigningClones {
|
||||||
|
#[must_use]
|
||||||
|
pub fn new(msrv: Msrv) -> Self {
|
||||||
|
Self { msrv }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl_lint_pass!(AssigningClones => [ASSIGNING_CLONES]);
|
||||||
|
|
||||||
impl<'tcx> LateLintPass<'tcx> for AssigningClones {
|
impl<'tcx> LateLintPass<'tcx> for AssigningClones {
|
||||||
fn check_expr(&mut self, cx: &LateContext<'tcx>, assign_expr: &'tcx hir::Expr<'_>) {
|
fn check_expr(&mut self, cx: &LateContext<'tcx>, assign_expr: &'tcx hir::Expr<'_>) {
|
||||||
|
if !self.msrv.meets(msrvs::ASSIGNING_CLONES) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Do not fire the lint in macros
|
// Do not fire the lint in macros
|
||||||
let expn_data = assign_expr.span().ctxt().outer_expn_data();
|
let expn_data = assign_expr.span().ctxt().outer_expn_data();
|
||||||
match expn_data.kind {
|
match expn_data.kind {
|
||||||
@ -72,6 +89,8 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, assign_expr: &'tcx hir::Expr<'_
|
|||||||
suggest(cx, assign_expr, lhs, &call);
|
suggest(cx, assign_expr, lhs, &call);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extract_msrv_attr!(LateContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to resolve the call to `Clone::clone` or `ToOwned::to_owned`.
|
// Try to resolve the call to `Clone::clone` or `ToOwned::to_owned`.
|
||||||
|
@ -1122,7 +1122,7 @@ pub fn register_lints(store: &mut rustc_lint::LintStore, conf: &'static Conf) {
|
|||||||
store.register_late_pass(move |_| Box::new(incompatible_msrv::IncompatibleMsrv::new(msrv())));
|
store.register_late_pass(move |_| Box::new(incompatible_msrv::IncompatibleMsrv::new(msrv())));
|
||||||
store.register_late_pass(|_| Box::new(to_string_trait_impl::ToStringTraitImpl));
|
store.register_late_pass(|_| Box::new(to_string_trait_impl::ToStringTraitImpl));
|
||||||
store.register_early_pass(|| Box::new(multiple_bound_locations::MultipleBoundLocations));
|
store.register_early_pass(|| Box::new(multiple_bound_locations::MultipleBoundLocations));
|
||||||
store.register_late_pass(|_| Box::new(assigning_clones::AssigningClones));
|
store.register_late_pass(move |_| Box::new(assigning_clones::AssigningClones::new(msrv())));
|
||||||
store.register_late_pass(|_| Box::new(zero_repeat_side_effects::ZeroRepeatSideEffects));
|
store.register_late_pass(|_| Box::new(zero_repeat_side_effects::ZeroRepeatSideEffects));
|
||||||
store.register_late_pass(|_| Box::new(manual_unwrap_or_default::ManualUnwrapOrDefault));
|
store.register_late_pass(|_| Box::new(manual_unwrap_or_default::ManualUnwrapOrDefault));
|
||||||
store.register_late_pass(|_| Box::new(integer_division_remainder_used::IntegerDivisionRemainderUsed));
|
store.register_late_pass(|_| Box::new(integer_division_remainder_used::IntegerDivisionRemainderUsed));
|
||||||
|
Loading…
Reference in New Issue
Block a user