rust/tests/ui/closures
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
..
2229_closure_analysis Auto merge of #109732 - Urgau:uplift_drop_forget_ref_lints, r=davidtwco 2023-05-12 12:04:32 +00:00
binder vars are ? 2023-04-25 19:53:09 +00:00
closure-expected-type Move /src/test to /tests 2023-01-11 09:32:08 +00:00
print vars are ? 2023-04-25 19:53:09 +00:00
add_semicolon_non_block_closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
add_semicolon_non_block_closure.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_cap_coerce_many_fail.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_cap_coerce_many_fail.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_no_cap_coerce_many_check_pass.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_no_cap_coerce_many_run_pass.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_no_cap_coerce_many_unsafe_0.mir.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_no_cap_coerce_many_unsafe_0.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_no_cap_coerce_many_unsafe_0.thir.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_no_cap_coerce_many_unsafe_1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure_promotion.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-array-break-length.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-array-break-length.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-bounds-cant-promote-superkind-in-struct.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-bounds-cant-promote-superkind-in-struct.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-bounds-static-cant-capture-borrowed.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-bounds-static-cant-capture-borrowed.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-bounds-subtype.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-bounds-subtype.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-expected.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-expected.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-immutable-outer-variable.fixed Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-immutable-outer-variable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-immutable-outer-variable.rs.fixed Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-immutable-outer-variable.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-move-sync.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-move-sync.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-1.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-2.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-3.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-3.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-4.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-4.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-5.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-no-fn-5.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-referencing-itself-issue-25954.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-referencing-itself-issue-25954.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-reform-bad.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-reform-bad.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-return-type-mismatch.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-return-type-mismatch.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-return-type-must-be-sized.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-return-type-must-be-sized.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-wrong-kind.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
closure-wrong-kind.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
coerce-unsafe-closure-to-unsafe-fn-ptr.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
coerce-unsafe-to-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
coerce-unsafe-to-closure.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
deeply-nested_closures.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
diverging-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-868.rs Move tests 2023-05-08 17:58:01 -03:00
issue-6801.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-6801.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-10398.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-10398.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-23012-supertrait-signature-inference.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-41366.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-42463.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-46742.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-48109.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-52437.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-52437.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-67123.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-67123.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-68025.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-72408-nested-closures-exponential.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-78720.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-78720.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
issue-80313-mutable-borrow-in-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutable-borrow-in-closure.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutable-borrow-in-move-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutable-borrow-in-move-closure.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutation-in-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutation-in-closure.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutation-in-move-closure.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-80313-mutation-in-move-closure.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-81700-mut-borrow.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-81700-mut-borrow.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-82438-mut-without-upvar.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-82438-mut-without-upvar.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-84044-drop-non-mut.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-84044-drop-non-mut.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-84128.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-84128.stderr Emit a hint for bad call return types due to generic arguments 2023-01-13 13:34:55 +09:00
issue-87461.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-87461.stderr Emit a hint for bad call return types due to generic arguments 2023-01-13 13:34:55 +09:00
issue-87814-1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-87814-2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-90871.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-90871.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-97607.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-99565.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-99565.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-101696.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-102089-multiple-opaque-cast.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-109188.rs Return equal for two identical projections 2023-03-21 15:28:11 +08:00
issue-109188.stderr Return equal for two identical projections 2023-03-21 15:28:11 +08:00
local-type-mix.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
local-type-mix.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
multiple-fn-bounds.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
multiple-fn-bounds.stderr Tweak "borrow closure argument" suggestion 2023-01-19 19:35:49 +00:00
old-closure-arg-call-as.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-arg.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-explicit-types.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-expr-precedence.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-expr-precedence.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-expression-remove-semicolon.fixed Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-expression-remove-semicolon.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-expression-remove-semicolon.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-fn-coerce.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-iter-1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
old-closure-iter-2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
once-move-out-on-heap.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
self-supertrait-bounds.rs Broken tests 2023-04-11 17:45:42 +00:00
semistatement-in-lambda.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
static-closures-with-nonstatic-return.rs add known-bug test for unsound issue 84366 2023-04-22 00:47:07 -04:00
supertrait-hint-cycle-2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
supertrait-hint-cycle-3.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
supertrait-hint-cycle.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
supertrait-hint-references-assoc-ty.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
thir-unsafeck-issue-85871.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00