rust/tests/ui/associated-inherent-types
bors 077fc26f0a Auto merge of #109732 - Urgau:uplift_drop_forget_ref_lints, r=davidtwco
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)
2023-05-12 12:04:32 +00:00
..
auxiliary
bugs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
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 Add regression tests for const-generic IATs 2023-04-25 23:32:13 +02:00
dispatch-on-self-type-0.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
dispatch-on-self-type-1.rs
dispatch-on-self-type-2.rs
dispatch-on-self-type-2.stderr
former-subst-ice.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
generic-associated-types-bad.item.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
generic-associated-types-bad.local.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
generic-associated-types-bad.region.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
generic-associated-types-bad.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
generic-const-exprs.rs Add regression tests for const-generic IATs 2023-04-25 23:32:13 +02:00
inference-fail.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
inference-fail.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
inference.rs Adjust tests for new drop and forget lints 2023-05-10 19:36:02 +02:00
issue-104260.rs
issue-109299-1.rs
issue-109299-1.stderr
issue-109299.rs
issue-109299.stderr
issue-109768.rs IAT: Add a few regression tests 2023-05-04 16:59:10 +02:00
issue-109768.stderr IAT: Add a few regression tests 2023-05-04 16:59:10 +02:00
issue-109789.rs IAT: Add a few regression tests 2023-05-04 16:59:10 +02:00
issue-109789.stderr IAT: Add a few regression tests 2023-05-04 16:59:10 +02:00
issue-109790.rs Only warn single-use lifetime when the binders match. 2023-05-10 19:49:02 +00:00
late-bound-regions.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
late-bound-regions.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
normalization-overflow.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
normalization-overflow.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
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 IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
private-in-public.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
regionck-0.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
regionck-0.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
regionck-1.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
regionck-1.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
regionck-2.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
regionck-2.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
style.rs
style.stderr
substitute-params-bad.rs
substitute-params-bad.stderr
substitute-params.rs
type-alias-bounds-are-enforced.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
unsatisfied-bounds-inferred-type.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
unsatisfied-bounds-inferred-type.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
unsatisfied-bounds-where-clause-on-assoc-ty.rs IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00
unsatisfied-bounds-where-clause-on-assoc-ty.stderr IAT: Introduce AliasKind::Inherent 2023-05-04 16:59:10 +02:00