Commit graph

21415 commits

Author SHA1 Message Date
Guillaume Gomez
a7fb37c1d8 Correctly handle expanded macros for literal_string_with_formatting_args lint 2025-01-07 15:55:41 +01:00
Guillaume Gomez
17f9344a96 Fix literal_string_with_formatting_args lint emitted when it should not 2025-01-07 15:35:21 +01:00
Catherine Flores
a9c0e22dfa
Changelog for Clippy 1.84 🧨 (#13937)
Roses are red,
Violets are blue,
Happy new year,
full of happiness and cheer!

---

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

<img height=700
src="https://github.com/user-attachments/assets/612834d0-d584-4bf3-b11e-3564456c10ee"
alt="The cats of this Clippy release" />

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

---

I've also updated the template to include the text I usually use for
moves, renames, or new lints.

changelog: none

---

That's it happy new year, kings, queens, and all other royalty! ❤️
2025-01-06 01:00:22 +00:00
Fridtjof Stoldt
ad69c65906
Only emit useless_vec suggestion if the macro does not contain code comments (#13911)
Fixes #13692.

If the `vec!` macro call contains comments, we should not provide
suggestions and let users handle it however they see fit.

changelog: Only emit `useless_vec` suggestion if the macro does not
contain code comments
2025-01-04 23:33:30 +00:00
Alejandra González
54f88c3c75
[needless_continue]: lint if the last stmt in loop is continue recurisvely (#13891)
fixes: #4077

Continuation of #11546. r? @y21 if you don't mind?

changelog: [`needless_continue`] lint if the last stmt in loop is
`continue` recurisvely
2025-01-04 21:52:42 +00:00
Fridtjof Stoldt
622382b6c6
Fix year in CHANGELOG.md
copy-pasta got the better of me xD 🍝

Co-authored-by: Samuel Tardieu <sam@rfc1149.net>
2025-01-04 22:28:51 +01:00
Guillaume Gomez
b76e0426a1 Add regression test for useless_vec with code comments 2025-01-03 22:55:25 +01:00
Guillaume Gomez
1b85ae3a60 Only emit useless_vec suggestion if the macro does not contain code comments 2025-01-03 22:55:25 +01:00
xFrednet
4e4a2d022b
Changelog for Clippy 1.84 🧨 2025-01-03 19:40:39 +01:00
xFrednet
4736004c2c
Update version attribute for 1.84 clippy lints 2025-01-03 19:39:32 +01:00
Alejandra González
7a01033797
Make CI a little bit safer (#13933)
This PR fixes two vulnerabilities in our CI, found with
[zizmor](https://github.com/woodruffw/zizmor). One could be exploited by
someone with tag-pushing permissions to execute arbitrary code in our CI
(see`deploy.yml`). The second vulnerability would expose our tokens to a
supply chain attack via a `build.rs` in one of the dependencies (See the
rest of the files, and https://github.com/actions/checkout/issues/485)

Pre-reviewed by @flip1995 in our DMs.

changelog:none
2025-01-03 00:06:49 +00:00
blyxyas
7ac151508e Make CI a little bit safer 2025-01-03 00:44:35 +01:00
Manish Goregaokar
631d9a2c5c
Add lint for calling Iterator::last() on DoubleEndedIterator (#13922)
I [recently realized that `.last()` might not call `next_back()` when it
is
available](https://qsantos.fr/2025/01/01/rust-gotcha-last-on-doubleendediterator/).
Although the implementor could make sure to implement `last()` to do so,
this is not what will happen by default. As a result, I think it is
useful to add a lint to promote using `.next_back()` over `.last()` on
`DoubleEndedIterator`.

If this is merged, we might want to close #1822.

changelog: [`double_ended_iterator_last`]: Add lint for calling
`Iterator::last()` on `DoubleEndedIterator`
2025-01-02 18:30:38 +00:00
yanglsh
f18399fb69 Emit redundant if when duplicated in needless_continue 2025-01-02 07:45:16 -07:00
Quentin Santos
d67c00f723 Dogfood double_ended_iterator_last 2025-01-01 22:19:16 +01:00
Quentin Santos
0d213aa09a Revert "Dogfood double_ended_iterator_last"
This reverts commit 09c5d34f98.
2025-01-01 22:16:33 +01:00
Quentin Santos
7331cc0f81 Only complain about default Iterator::last() 2025-01-01 22:16:07 +01:00
Quentin Santos
27acfd8a5b Prefer if chain to let-else 2025-01-01 20:33:58 +01:00
Alejandra González
034f3d224c
Improve slow_vector_initialization suggestion (#13912)
close #13781

The `slow_vector_initialization` lint currently only suggests using the
`vec!` macro with size, but it does not suggest removing the `resize`
method call.

changelog: [`slow_vector_initialization`]: improve
`slow_vector_initialization` suggestion
2025-01-01 19:21:01 +00:00
Quentin Santos
09c5d34f98 Dogfood double_ended_iterator_last 2025-01-01 19:47:22 +01:00
Quentin Santos
458c955ae3 Fix conflicts with double_ended_iterator_last 2025-01-01 18:58:53 +01:00
Quentin Santos
707653f268 Add lint for calling last() on DoubleEndedIterator 2025-01-01 18:47:23 +01:00
Alejandra González
33a6590ce1
Check if deref target implements is_empty for len_zero lint (#13871)
In this case, the lint can be triggered as well as `is_empty()` will be
found on the target type.
One such case was found in Clippy sources (first commit)

changelog: [`len_zero`]: trigger if deref target implements `is_empty()`

Close #13861
2025-01-01 15:09:26 +00:00
Samuel Tardieu
4c9c2cca2b Check if deref target implements is_empty for len_zero lint
In this case, the lint can be triggered as well as `is_empty()` will be
found on the target type.
2025-01-01 14:14:39 +01:00
dswij
c52740c87b
add test for ICE (#13914)
`asked to assemble constituent types of unexpected type: Binder(Foo,
[])`

Fixes #10972

changelog: none
2024-12-31 12:51:00 +00:00
Matthias Krüger
1e0b782a63 add test for ICE
`asked to assemble constituent types of unexpected type: Binder(Foo, [])`

Fixes #10972
2024-12-31 12:00:19 +01:00
lapla-cogito
4899333886
better suggestion for slow_vector_initialization 2024-12-31 16:07:06 +09:00
Manish Goregaokar
7a834b5d3a
Use the full lifetime name in suggestions (#13907)
Using `lifetime.ident.name` in suggestions will not output the raw
modifier. For example, `'r#struct` will be rendered as `'struct` which
would be incorrect.

Fix #13899

changelog: [`needless_arbitrary_self_type`]: use the raw lifetime name
in suggestions
2024-12-30 17:57:59 +00:00
Timo
2aea7a080d
Fix parentheses when replacing matches!(…, None) with .is_none() (#13906)
Proper parentheses need to be added to some expressions in receiver
position.

Fix #13902

changelog: [`redundant_pattern_matching`]: use proper parentheses when
suggesting replacing `matches!(…, None)` by `.is_none()`
2024-12-30 14:06:30 +00:00
Timo
be49f8613a
Move more def paths into clippy_utils::paths (#13903)
I discovered that there were paths declared in `clippy_utils::paths` in
https://github.com/rust-lang/rust-clippy/pull/13829 so moving a few
remaining hardcoded ones in one place.

changelog: Move more def paths into `clippy_utils::paths`

r? @y21
2024-12-30 13:50:09 +00:00
Guillaume Gomez
b515064fd2 Correctly handle char paths 2024-12-30 12:28:47 +01:00
Samuel Tardieu
a657fcc89a Use the full lifetime name in suggestions
Using `lifetime.ident.name` in suggestions will not output the raw
modifier. For example, `'r#struct` will be rendered as `'struct` which
would be incorrect.
2024-12-30 00:07:18 +01:00
Samuel Tardieu
e4b11a7266 Fix parentheses when replacing matches!(…, None) with .is_none() 2024-12-29 23:25:59 +01:00
Guillaume Gomez
34b1765e65 Move more def paths into clippy_utils::paths 2024-12-29 20:39:43 +01:00
Alejandra González
b57d98b00e
Do not remove required parentheses in borrow_as_ptr suggestion (#13884)
Also, simplify boolean shortcut expression, and ensure that
applicability is properly applied, as it was ignored and
`MachineApplicable` was always used.

changelog: [`borrow_as_ptr`]: do not remove required parentheses in
autofix suggestion

Close #13882
2024-12-29 16:29:53 +00:00
Fridtjof Stoldt
f5f1abd8fb
borrow_interior_mutable_const ICE into FN (#13877)
This PR just makes sure that we exit the function before getting an ICE
and adds a regression test. Related to #12979. We would need to keep
researching the issue, but as the ICEing code isn't that complicated,
getting a hotfix into nightly is urgent.

changelog:[`borrow_interior_mutable_const`] Fix ICE #12979
2024-12-29 15:52:35 +00:00
Samuel Tardieu
eef47fc0b7 Do not remove required parentheses in borrow_as_ptr suggestion
Also, simplify boolean expression, and ensure that proper applicability
is used.
2024-12-29 16:50:05 +01:00
dswij
c8ba3e1d7a
use the correct ParamEnv when checking future's output type (#13863)
Fixes #13862

`missing_headers::check` is sometimes called from outside of a body
(specifically, from `check_attributes`, where the LateContext's ParamEnv
is not yet properly initialized for that item). Using that empty
ParamEnv for trait solving things from within the body can then lead to
various ICEs, like the linked issue where we have a const generic
parameter `DMA_INST` without a `ConstArgHasType` bound in the ParamEnv
so the const parameter has no type, which is normally not supposed to
happen.

We have the item's DefId so we can just get its ParamEnv/TypingEnv from
there, and using that one for trait solving should be safe.

changelog: none
2024-12-29 09:31:57 +00:00
dswij
aef47725a3
Examples fixes for regex (#13874)
Examples fixes for regex

changelog: none
2024-12-29 09:30:01 +00:00
llogiq
786f090bb9
Do not trigger trailing_empty_array in tests (#13844)
Close #13837

changelog: [`trailing_empty_array`]: do not trigger on tests
2024-12-29 00:10:58 +00:00
blyxyas
d7cc6c45c8 borrow_interior_mutable_const ICE into FN
Convert the ICE reported in #12979 into a false negative.
We prefer a false negative to a ICE (because the ICE could
still affect the user even when not activating the lint).
2024-12-28 19:42:30 +01:00
lengyijun
e582fcd75d [needless_continue]: lint if the last stmt in for/while/loop is continue, recursively
fixes: #4077
2024-12-28 09:58:06 -07:00
Philipp Krones
998c780126
fix arguments of ExprKind::MethodCall (#13890)
changelog: none
2024-12-28 13:47:09 +00:00
lapla-cogito
09022bbd45
fix arguments of ExprKind::MethodCall 2024-12-28 22:41:29 +09:00
Timo
a8968e5dd8
Make inconsistent_struct_constructor "all fields are shorthand" requirement configurable (#13737)
Fixes #11846.

This PR has three commits:
- The first commit adds an `initializer-suggestions` configuration to
control suggestion applicability when initializers are present. The
following are the options:
  - "none": do not suggest
- "maybe-incorrect": suggest, but do not apply suggestions with `--fix`
  - "machine-applicable": suggest and apply suggestions with `--fix`
- The second commit fixes suggestions to handle field attributes
(problem [noticed by
@samueltardieu](https://github.com/rust-lang/rust-clippy/pull/13737#discussion_r1859261645)).
- The third commit adds `initializer-suggestions = "machine-applicable"`
to Clippy's `clippy.toml` and applies the suggestions. (Nothing seems to
break.)

---

changelog: make `inconsistent_struct_constructor` "all fields are
shorthand" requirement configurable
2024-12-27 22:05:03 +00:00
Fridtjof Stoldt
363e61dcbf
remove description of known problems in match_same_arms that have already been resolved (#13873)
The "known problems" pointed out in the `match_same_arms` lint seem to
have already been resolved.

changelog: none
2024-12-27 22:03:38 +00:00
Fridtjof Stoldt
4be0e62b22
correct suggestion for manual_div_ceil lint (#13864)
fix #13843

The `manual_div_ceil` lint makes incorrect suggestion when type suffixes
need to be made explicit in the suggested code.

changelog: [`manual_div_ceil`]: suggested code now includes appropriate
type suffixes where necessary
2024-12-27 21:44:13 +00:00
Timo
553a381764
Remove obsolete comment (#13850)
`is_integer_const()` does the const folding.

changelog: none
2024-12-27 15:04:29 +00:00
Samuel Moelius
8a38bcc390 Make "all fields are shorthand" requirement configurable
Handle field attributes in suggestions

Fix adjacent code

Address review comments

https://github.com/rust-lang/rust-clippy/pull/13737#discussion_r1861352124

Address all review comments but one

This comment is not yet addressed: https://github.com/rust-lang/rust-clippy/pull/13737#discussion_r1874544907

`initializer_suggestions` -> `lint_inconsistent_struct_field_initializers`
2024-12-26 19:36:58 -05:00
Philipp Krones
609cd310be
Rustup (#13881)
r? @ghost

changelog: none
2024-12-26 13:52:31 +00:00