Commit graph

21174 commits

Author SHA1 Message Date
Fridtjof Stoldt
5dc5842573
Changelog for Clippy 1.83 🤖 (#13716)
This is in honor of `@bors` who is no longer used in this repo. I've
been saving this poem for a special PR, but it just seems fitting to use
it now:

Bors the bot,
Handsome and strong!
Will you go with me,
To prom?

---

### The cat of this release is Abu nominated by @jdonszelmann :

<img height=700
src="https://github.com/user-attachments/assets/414f24a1-8bbf-4fed-bcbc-acc5ca6a1353"
alt="The cats of this Clippy release" />

Cats for the next release can be nominated in the comments :D

---

changelog: none
2024-11-28 12:39:57 +00:00
Jason Newcomb
b4163f08c7
[bad_bit_mask] Fix FP on proc macros (#13736)
`clap-3.1.6` was not compiling on the rustc-perf benchmarks because of
this lint. Also, the user could not allow the lint on the macro itself
because it was checking Exprs, not whatever the input of `bitflags!` is.

```
error: &-masking with zero
   --> src/build/arg_settings.rs:197:1
    |
            (#[allow] here)
197 | / bitflags! {
198 | |     struct Flags: u32 {
199 | |         const REQUIRED         ...
200 | |         const MULTIPLE_OCC     ...
...   |
226 | |     }
227 | | }
    | |_^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bad_bit_mask
    = note: this error originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
```

changelog:  [`bad_bit_mask`]: Fix FP on procedural macros
2024-11-27 20:31:29 +00:00
Timo
67657da671
Handle repetition of associated constant constraint as well (#13723)
changelog: [`trait_duplication_in_bounds`]: trigger on duplicate const
associated constraint as well

~~The first commit is part of #13722 which must be merged first.~~
2024-11-27 20:23:54 +00:00
Philipp Krones
9b0597d78a
Fix: Use multipart_suggestion for derivable_impls (#13717)
This should address #13099 for the `derivable_impls` test. As I've not
contributed to clippy before, I'd like to make sure i'm on the right
track before doing more :)

changelog: [`derivable_impls`]: Use multipart_suggestion to aggregate
feedback
2024-11-27 17:07:51 +00:00
Catherine Flores
8bc1a9e49a
unnecessary_map_or: fix version for lint addition (#13733)
Fix #13730

changelog: none
2024-11-26 17:46:12 +00:00
blyxyas
17fb5adf58 [] Fix FP on proc macros 2024-11-26 17:36:12 +01:00
Samuel Tardieu
6dcac6e2bf unnecessary_map_or: fix version for lint addition 2024-11-26 11:12:07 +01:00
Samuel Tardieu
2bf03f19e2 Handle repetition of associated constant constraint as well 2024-11-25 23:24:51 +01:00
llogiq
d49501c818
Use a better description of an internal function (#13721)
Found while reading code: the comment was incorrect as it stops counting
as soon as two elements are different.

changelog: none
2024-11-25 20:25:27 +00:00
llogiq
3d881e1e59
Prevent ICE in case of a bound constraint on generic argument (#13722)
Fix #13706

changelog: [`trait_duplication_in_bounds`]: fix ICE on duplicate type or
constant bound
2024-11-25 20:24:39 +00:00
Fridtjof Stoldt
d070402440
Remove incorrect "default there is no limit" documentation from trivial_copy_size_limit (#13719)
Remove the documentation incorrectly saying there is no default,
followed by the default.

![image](https://github.com/user-attachments/assets/eab54c81-945d-4ce2-b9fb-5cc84f01e68c)

changelog: [`trivially_copy_pass_by_ref`]: Removed incorrect
documentation suggesting the default has no limit.
2024-11-25 10:28:44 +00:00
Kampfkarren
671183a41f Bless 2024-11-24 23:16:27 -08:00
Alex Macleod
479e1fc7c0
Add note about caveat for cfg(doc) (#13724)
For example, we definitely wouldn't want to do this in libcore.

changelog: none
2024-11-24 19:05:22 +00:00
Michael Howell
418dfb2257
Add Known problems section 2024-11-24 11:23:14 -07:00
Michael Howell
943c3bc3db
Add note about caveat for cfg(doc)
For example, we definitely wouldn't want to do this in libcore.
2024-11-23 17:10:08 -07:00
Samuel Tardieu
9fd8e99d91 Prevent ICE in case of a bound constraint on generic argument 2024-11-23 21:25:34 +01:00
Samuel Tardieu
80df2c4ced Use a better description of an internal function 2024-11-23 20:38:20 +01:00
Fridtjof Stoldt
45e1a3a6f4
Update CHANGELOG.md
Co-authored-by: Philipp Krones <hello@philkrones.com>
2024-11-22 20:47:47 +00:00
boyned//Kampfkarren
f0bb475f80
Remove incorrect "no default" text from trivial_copy_size_limit 2024-11-22 10:16:46 -08:00
Scott Gerring
9f7fb41272 fix: multipart suggestions for derivable_impls 2024-11-22 14:17:45 +01:00
xFrednet
70d53bb364
Changelog for Clippy 1.83 🤖 2024-11-22 11:09:50 +00:00
Alejandra González
8298da72e7
Add new lint doc_include_without_cfg (#13625)
It's becoming more and more common to see people including markdown
files in their code using `doc = include_str!("...")`, which is great.
However, often there is no condition on this include, which is not great
because it slows down compilation and might trigger recompilation if
these files are updated.

This lint aims at fixing this situation.

changelog: Add new lint `doc_include_without_cfg`
2024-11-21 21:48:57 +00:00
Guillaume Gomez
404e47aa84 Add new lint doc_include_without_cfg 2024-11-21 22:43:55 +01:00
xFrednet
78d0a2aaac
Update version attributes for 1.83 lints 2024-11-21 13:50:31 +00:00
Alejandra González
a19d69d273
Sync and Release automation (#13694)
Based on https://github.com/rust-lang/rust-clippy/pull/13693

Adds 2 subcommands to `cargo dev`:

- `cargo dev sync update_nightly`: Which updates the nightly versions in
`rust-toolchain` and `clippy_utils/README.md`
- `cargo dev release bump_version`: Bumps the version in all relevant
`Cargo.toml` files

Those are pulled out of
https://github.com/rust-lang/rust-clippy/pull/12759, which I'll rebase
on this.

Next step is to update the documentation, which I'll partly pull out of
https://github.com/rust-lang/rust-clippy/pull/12762

r? @blyxyas (as you reviewed the first PR in the chain and were assigned
to the second one)

cc https://github.com/rust-lang/rust-clippy/issues/13556

changelog: none
2024-11-19 22:43:56 +00:00
Timo
cfd17d4fe1
Use a better message for unnecessary_map_or lint (#13708)
Suggested by, and closes #13704.

changelog: [`unnecessary_map_or`]: use a clearer lint message
2024-11-19 22:15:25 +00:00
Samuel Tardieu
425346a1bc Use a better message for unnecessary_map_or lint
Suggested by @smoelius.
2024-11-19 21:44:29 +01:00
Philipp Krones
93d5ccdba7
Add cargo dev release subcommand
Currently this only provides the feature to auto-update the versions in the
`Cargo.toml` files. With the move to Josh, a command to get beta and stable
release commits will be added.
2024-11-19 17:59:33 +01:00
Philipp Krones
66715532ab
Add cargo dev sync subcommand
Currently this only provides the feature to auto-update the nightly version in
the `rust-toolchain` file and the `clippy_utils/README.md` file. The actual sync
to and from the Rust repo will be added with the move to Josh.
2024-11-19 17:59:33 +01:00
Alex Macleod
10677c3a19
Don't consider lifetimes in bounded types unused (fix extra_unused_lifetimes FP) (#13583)
Fixes #13578

r? @Alexendoo

changelog: don't consider lifetimes in bounded types unused (fix
`extra_unused_lifetimes` FP #13578)
2024-11-19 15:58:25 +00:00
Samuel Moelius
eaec0cab7e Fix 13578 (#13583)
changelog: don't consider lifetimes in bounded types unused (fix `extra_unused_lifetimes` FP #13578)
2024-11-18 20:20:19 -05:00
Manish Goregaokar
53994bda92
Remove extern vectorcall tests (#13702)
On arm64 I get

```
error[E0570]: `"vectorcall"` is not a supported ABI for the current target
```

We don't seem to be doing any ABI specific handling so it seems fine to
just remove this one since there are other tests

changelog: none
2024-11-18 19:00:14 +00:00
Manish Goregaokar
7a1e9f28ad
missing_safety_doc accept uppercase "SAFETY" (#13701)
changelog: [`missing_safety_doc`]: accept uppercase "SAFETY"

In [Oxc](https://github.com/oxc-project/oxc)'s codebase, we try to draw
attention as clearly as possible to the safety constraints of unsafe
code by including an uppercase `# SAFETY` doc comment.

Clippy's `missing_safety_doc` lint does not recognise "SAFETY" in upper
case, so we also need to include `#[expect(clippy::missing_safety_doc)]`
on every unsafe function, to avoid a false positive. Unfortunately this
defeats the purpose of the lint, as if someone later removes the safety
docs, the lint rule does not trigger.

I don't know how common this style of documenting unsafe functions is,
but I don't imagine also supporting `# SAFETY` would disturb other users
who prefer `# Safety`.
2024-11-18 18:59:13 +00:00
Catherine Flores
d3edd057b9
Handle Option::map_or(true, …) in unnecessary_map_or lint (#13653)
changelog: [`unnecessary_map_or`]: handle `Option::map_or(true, …)`
2024-11-18 17:33:42 +00:00
Alex Macleod
90de44ab26 Remove extern vectorcall tests 2024-11-18 16:31:10 +00:00
overlookmotel
d8423ca28c missing_safety_doc accept capitalized "SAFETY" 2024-11-18 14:03:16 +00:00
Philipp Krones
9c8d9504ce
Introduce utils mod in clippy_dev
There was some dependence between the different subcommands of clippy_dev. And
this dependence will increased with the introduction of the sync and release
subcommands. This moves the common functions to a `utils` module, to decouple
the other modules.
2024-11-18 10:04:27 +01:00
Alejandra González
0712689aae
Prepare clippy_utils README and Cargo.toml for publishing (#13693)
Follow up to https://github.com/rust-lang/rust-clippy/pull/13691

Adds metadata to the `clippy_utils/Cargo.toml`, which is mostly copied
from the root `Cargo.toml`.
Adds a `README.md` file listing the nightly version `clippy_utils` can
be used with, mentions that there are no stability guarantees and the
license.

The next PR will add automation to update the nightly toolchains in
those files and the versions in the `Cargo.toml`s.

cc https://github.com/rust-lang/rust-clippy/issues/13556

changelog: none
2024-11-17 22:49:16 +00:00
Timo
97b9e4af17
Do not trigger if_let_mutex starting from Edition 2024 (#13695)
Close #13679

changelog: [`if_let_mutex`]: disable lint from Edition 2024 since
[stabilized if_let_rescope
](https://github.com/rust-lang/rust/issues/131154)
2024-11-17 18:10:29 +00:00
Alexey Semenyuk
ef42a66afe Do not trigger if_let_mutex strating from Edition 2024 2024-11-17 22:49:17 +05:00
Philipp Krones
74b95f2e65
Prepare clippy_utils for publishing
- Add metadata to clippy_utils/Cargo.toml file
- Add clippy_utils README.md file
2024-11-17 18:16:13 +01:00
Catherine Flores
8698c31f88
Don't lint CStr literals, do lint float literals in redundant_guards (#13698)
Two changes to `redundant_guards`:

- Lint float literals. We used to do that before but that was changed in
#11305 because at the time there was a future compat warning and it was
planned to make pattern matching floats a hard error.

In rust-lang/rust#116284 it was decided to actually remove the lint and
only make matching `NAN` specifically a hard error. The `NAN` part isn't
relevant/important here because this PR only changes what literals are
warned and `f64::NAN` isn't a literal, but I've added a test anyway to
make sure we continue to not lint there.
- Don't lint CStr literals because that can't be a pattern right now
(fixes #13681)

changelog: none
2024-11-17 04:24:43 +00:00
y21
8859847373 redundant_guards: lint float literals, don't lint cstr literals 2024-11-17 04:14:27 +01:00
Alex Macleod
5f05ce4c70
Support user format-like macros (#9948)
Add support for `#[clippy::format_args]` attribute that can be attached
to any macro to indicate that it functions the same as the built-in
format macros like `format!`, `println!` and `write!`

---

changelog: Enhancement: [`format_in_format_args`],
[`recursive_format_impl`], [`to_string_in_format_args`],
[`uninlined_format_args`], [`unused_format_specs`]: Recognizes
`#[clippy::format_args]` to support custom 3rs party format macros.
2024-11-16 02:59:26 +00:00
Samuel Tardieu
de03a05bc8 unnecessary_map_or: lint .map_or(true, …) as well 2024-11-16 00:12:41 +01:00
Samuel Tardieu
ca963b653e Simplify instances of Option::map_or(true, …) in Clippy sources 2024-11-16 00:12:41 +01:00
Samuel Tardieu
d1688b53f1 unnecessary_map_or: add non-comparaison tests 2024-11-15 23:56:19 +01:00
Yuri Astrakhan
81dceed8ba Support user format-like macros
Add support for `#[clippy::format_args]` attribute that can be attached to any macro to indicate that it functions the same as the built-in format macros like `format!`, `println!` and `write!`
2024-11-15 15:26:48 -05:00
Alejandra González
627363e811
Reverse dependency between clippy_utils and clippy_config (#13691)
In preparation of #13556, I want to remove the dependency on
`clippy_config`, as I don't think that we want to publish that for
outside consumers. To do this the 2 dependecies on `clippy_config` had
to be removed:

1. The MSRV implementation was in `clippy_config`, but was required in
`qualify_min_const`. I think exposing the MSRV infrastructure and the
MSRVs we defined might also be helpful for `clippy_utils` users. I don't
see why it should not be able to live in `clippy_utils` from a technical
point of few.
2. The `create_disallowed_map` function that took in a
`clippy_utils::types::DisallowedPath` is moved to the `DisallowedPath`
implementation. This also fits there and is only useful for Clippy and
not in `clippy_utils` for external consumers.

`clippy_config` now depends in `clippy_utils`, so the dependecy just got
reversed. But having the `clippy_utils` crate as the base of the
dependency tree in Clippy makes sense.

changelog: none
2024-11-15 20:08:03 +00:00
Alex Macleod
83f7526cf0
Allow conditional Send futures in future_not_send (#13590)
Closes #6947

This changes the lint to allow futures which are not `Send` as a result
of a generic type parameter not having a `Send` bound and only lint
futures that are always `!Send` for any type, which I believe is the
more useful behavior (like the comments in the linked issue explain).

This is still only a heuristic (I'm not sure if there's a more general
way to do this), but it should cover the common cases I could think of
(including the code examples in the linked issue)

changelog: [`future_not_send`]: allow conditional `Send` futures
2024-11-15 19:23:58 +00:00