077fc26f0a
Uplift `clippy::{drop,forget}_{ref,copy}` lints This PR aims at uplifting the `clippy::drop_ref`, `clippy::drop_copy`, `clippy::forget_ref` and `clippy::forget_copy` lints. Those lints are/were declared in the correctness category of clippy because they lint on useless and most probably is not what the developer wanted. ## `drop_ref` and `forget_ref` The `drop_ref` and `forget_ref` lint checks for calls to `std::mem::drop` or `std::mem::forget` with a reference instead of an owned value. ### Example ```rust let mut lock_guard = mutex.lock(); std::mem::drop(&lock_guard) // Should have been drop(lock_guard), mutex // still locked operation_that_requires_mutex_to_be_unlocked(); ``` ### Explanation Calling `drop` or `forget` on a reference will only drop the reference itself, which is a no-op. It will not call the `drop` or `forget` method on the underlying referenced value, which is likely what was intended. ## `drop_copy` and `forget_copy` The `drop_copy` and `forget_copy` lint checks for calls to `std::mem::forget` or `std::mem::drop` with a value that derives the Copy trait. ### Example ```rust let x: i32 = 42; // i32 implements Copy std::mem::forget(x) // A copy of x is passed to the function, leaving the // original unaffected ``` ### Explanation Calling `std::mem::forget` [does nothing for types that implement Copy](https://doc.rust-lang.org/std/mem/fn.drop.html) since the value will be copied and moved into the function on invocation. ----- Followed the instructions for uplift a clippy describe here: https://github.com/rust-lang/rust/pull/99696#pullrequestreview-1134072751 cc `@m-ou-se` (as T-libs-api leader because the uplifting was discussed in a recent meeting) |
||
---|---|---|
.. | ||
auxiliary | ||
bugs | ||
ambiguity.rs | ||
ambiguity.stderr | ||
assoc-inherent-no-body.rs | ||
assoc-inherent-no-body.stderr | ||
assoc-inherent-private.rs | ||
assoc-inherent-private.stderr | ||
assoc-inherent-unstable.rs | ||
assoc-inherent-unstable.stderr | ||
assoc-inherent-use.rs | ||
const-generics.rs | ||
dispatch-on-self-type-0.rs | ||
dispatch-on-self-type-1.rs | ||
dispatch-on-self-type-2.rs | ||
dispatch-on-self-type-2.stderr | ||
former-subst-ice.rs | ||
generic-associated-types-bad.item.stderr | ||
generic-associated-types-bad.local.stderr | ||
generic-associated-types-bad.region.stderr | ||
generic-associated-types-bad.rs | ||
generic-const-exprs.rs | ||
inference-fail.rs | ||
inference-fail.stderr | ||
inference.rs | ||
issue-104260.rs | ||
issue-109299-1.rs | ||
issue-109299-1.stderr | ||
issue-109299.rs | ||
issue-109299.stderr | ||
issue-109768.rs | ||
issue-109768.stderr | ||
issue-109789.rs | ||
issue-109789.stderr | ||
issue-109790.rs | ||
late-bound-regions.rs | ||
late-bound-regions.stderr | ||
normalization-overflow.rs | ||
normalization-overflow.stderr | ||
normalize-projection-0.rs | ||
normalize-projection-1.rs | ||
not-found-self-type-differs-shadowing-trait-item.rs | ||
not-found-self-type-differs-shadowing-trait-item.shadowed.stderr | ||
not-found-self-type-differs-shadowing-trait-item.uncovered.stderr | ||
not-found-self-type-differs.alias.stderr | ||
not-found-self-type-differs.local.stderr | ||
not-found-self-type-differs.rs | ||
not-found-unsatisfied-bounds-0.rs | ||
not-found-unsatisfied-bounds-0.stderr | ||
not-found-unsatisfied-bounds-1.rs | ||
not-found-unsatisfied-bounds-1.stderr | ||
not-found-unsatisfied-bounds-in-multiple-impls.rs | ||
not-found-unsatisfied-bounds-in-multiple-impls.stderr | ||
private-in-public.rs | ||
private-in-public.stderr | ||
regionck-0.rs | ||
regionck-0.stderr | ||
regionck-1.rs | ||
regionck-1.stderr | ||
regionck-2.rs | ||
regionck-2.stderr | ||
style.rs | ||
style.stderr | ||
substitute-params-bad.rs | ||
substitute-params-bad.stderr | ||
substitute-params.rs | ||
type-alias-bounds-are-enforced.rs | ||
unsatisfied-bounds-inferred-type.rs | ||
unsatisfied-bounds-inferred-type.stderr | ||
unsatisfied-bounds-where-clause-on-assoc-ty.rs | ||
unsatisfied-bounds-where-clause-on-assoc-ty.stderr |