rust/compiler/rustc_builtin_macros/src
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
..
assert Rip it out 2023-05-01 16:15:13 +08:00
deriving enable rust_2018_idioms for doctests 2023-05-07 00:12:29 +03:00
format_foreign Use as_deref in compiler (but only where it makes sense) 2022-11-16 21:58:58 +00:00
alloc_error_handler.rs Revert "Remove #[alloc_error_handler] from the compiler and library" 2023-04-25 00:08:35 +02:00
asm.rs Rollup merge of #111027 - clubby789:query-instability-builtin-macros, r=petrochenkov 2023-05-04 08:09:05 +02:00
assert.rs Rip it out 2023-05-01 16:15:13 +08:00
cfg_accessible.rs Migrate most of rustc_builtin_macros to diagnostic impls 2023-04-10 21:16:53 +01:00
cfg_eval.rs Workaround unstable stmt_expr_attributes for method receiver expressions. 2022-10-23 09:27:12 +00:00
cfg.rs Migrate most of rustc_builtin_macros to diagnostic impls 2023-04-10 21:16:53 +01:00
cmdline_attrs.rs expand: Pass ast::Crate by reference to AST transforming passes 2023-03-23 14:20:55 +04:00
compile_error.rs Migrate most of rustc_builtin_macros to diagnostic impls 2023-04-10 21:16:53 +01:00
concat_bytes.rs fix TODO comments 2023-05-02 10:32:07 +00:00
concat_idents.rs refactor: use by-ref TokenTree iterator to avoid a few clones 2023-05-11 21:59:38 -05:00
concat.rs initial step towards implementing C string literals 2023-05-02 10:30:09 +00:00
derive.rs Migrate most of rustc_builtin_macros to diagnostic impls 2023-04-10 21:16:53 +01:00
edition_panic.rs Rip it out 2023-05-01 16:15:13 +08:00
env.rs Migrate most of rustc_builtin_macros to diagnostic impls 2023-04-10 21:16:53 +01:00
errors.rs Migrate builtin_macros::asm diagnostics to translatable diagnostics 2023-04-30 21:45:46 +01:00
format_foreign.rs Remove useless drop of copy type 2023-05-10 19:36:01 +02:00
format.rs Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
global_allocator.rs Rename ast::Static to ast::StaticItem to match ast::ConstItem 2023-04-04 15:34:40 +00:00
lib.rs Migrate offset_of from a macro to builtin # syntax 2023-05-05 21:44:13 +02:00
log_syntax.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
proc_macro_harness.rs Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
source_util.rs Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
standard_library_imports.rs rustc_interface: Add a new query pre_configure 2023-03-23 14:22:48 +04:00
test_harness.rs Add #[no_coverage] to the test harness's fn main 2023-05-01 11:01:12 +10:00
test.rs Fix static string lints 2023-04-25 18:59:55 +01:00
trace_macros.rs refactor: use by-ref TokenTree iterator to avoid a few clones 2023-05-11 21:59:38 -05:00
type_ascribe.rs Add unstable type_ascribe macro 2022-11-19 22:16:42 +01:00
util.rs rustc: Remove unused Session argument from some attribute functions 2023-03-22 13:55:55 +04:00