Skip to content

Commit 7f509ab

Browse files
committed
clippy: add MetaSized conditions
Existing lints that had special-casing for `Sized` predicates ought to have these same special cases applied to `MetaSized` predicates.
1 parent 3e5a550 commit 7f509ab

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

src/tools/clippy/clippy_lints/src/methods/unnecessary_to_owned.rs

+2
Original file line numberDiff line numberDiff line change
@@ -386,9 +386,11 @@ fn check_other_call_arg<'tcx>(
386386
&& let (input, n_refs) = peel_middle_ty_refs(*input)
387387
&& let (trait_predicates, _) = get_input_traits_and_projections(cx, callee_def_id, input)
388388
&& let Some(sized_def_id) = cx.tcx.lang_items().sized_trait()
389+
&& let Some(metasized_def_id) = cx.tcx.lang_items().metasized_trait()
389390
&& let [trait_predicate] = trait_predicates
390391
.iter()
391392
.filter(|trait_predicate| trait_predicate.def_id() != sized_def_id)
393+
.filter(|trait_predicate| trait_predicate.def_id() != metasized_def_id)
392394
.collect::<Vec<_>>()[..]
393395
&& let Some(deref_trait_id) = cx.tcx.get_diagnostic_item(sym::Deref)
394396
&& let Some(as_ref_trait_id) = cx.tcx.get_diagnostic_item(sym::AsRef)

src/tools/clippy/clippy_lints/src/needless_borrows_for_generic_args.rs

+2
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ fn needless_borrow_count<'tcx>(
174174
) -> usize {
175175
let destruct_trait_def_id = cx.tcx.lang_items().destruct_trait();
176176
let sized_trait_def_id = cx.tcx.lang_items().sized_trait();
177+
let metasized_trait_def_id = cx.tcx.lang_items().metasized_trait();
177178
let drop_trait_def_id = cx.tcx.lang_items().drop_trait();
178179

179180
let fn_sig = cx.tcx.fn_sig(fn_id).instantiate_identity().skip_binder();
@@ -209,6 +210,7 @@ fn needless_borrow_count<'tcx>(
209210
.all(|trait_def_id| {
210211
Some(trait_def_id) == destruct_trait_def_id
211212
|| Some(trait_def_id) == sized_trait_def_id
213+
|| Some(trait_def_id) == metasized_trait_def_id
212214
|| cx.tcx.is_diagnostic_item(sym::Any, trait_def_id)
213215
})
214216
{

src/tools/clippy/clippy_lints/src/needless_pass_by_value.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,16 @@ impl<'tcx> LateLintPass<'tcx> for NeedlessPassByValue {
116116
];
117117

118118
let sized_trait = need!(cx.tcx.lang_items().sized_trait());
119+
let metasized_trait = need!(cx.tcx.lang_items().metasized_trait());
119120

120121
let preds = traits::elaborate(cx.tcx, cx.param_env.caller_bounds().iter())
121122
.filter(|p| !p.is_global())
122123
.filter_map(|pred| {
123124
// Note that we do not want to deal with qualified predicates here.
124125
match pred.kind().no_bound_vars() {
125-
Some(ty::ClauseKind::Trait(pred)) if pred.def_id() != sized_trait => Some(pred),
126+
Some(ty::ClauseKind::Trait(pred))
127+
if pred.def_id() != sized_trait && pred.def_id() != metasized_trait
128+
=> Some(pred),
126129
_ => None,
127130
}
128131
})

0 commit comments

Comments
 (0)