Commit graph

24083 commits

Author SHA1 Message Date
Jason Newcomb
25cbcb4331
refactor(lines_filter_map_ok): move to under methods/ (#15925)
changelog: none
2025-10-26 22:04:43 +00:00
Jason Newcomb
d1b51eafaa
{option,result}_map_unit_fn: fix and clean-up tests, make suggestions multiline (#15871)
changelog: none
2025-10-24 20:46:18 +00:00
Jason Newcomb
3dcf3990f5
fix(manual_let_else): expressions ending with '}' (#15919)
`let-else` statements do not allow the init expression to end with '}'

Fixes rust-lang/rust-clippy#15914

changelog: [`manual_let_else`]: If the init expression ends with `'}'`
wrap it with `(...)`
2025-10-24 20:29:37 +00:00
Jason Newcomb
f975caac48
Fix trait method checking in book (#15941)
changelog: none

Fixes rust-lang/rust-clippy#15938

r? Jarcho
2025-10-24 20:15:27 +00:00
Samuel Tardieu
8ff0cf8551
Fix len_zero FP on unstable methods (#15894)
Closes rust-lang/rust-clippy#15890

changelog: [`len_zero`] fix FP on unstable methods
2025-10-23 22:16:54 +00:00
yanglsh
9eba2cccd8 fix: len_zero FP on unstable methods 2025-10-24 05:58:18 +08:00
Samuel Tardieu
0cc159480e
Fix trait method checking in book 2025-10-23 22:50:04 +02:00
dswij
09c3237590
chore(empty_enum): rename to empty_enums (#15912)
According to the lint naming guidelines[^1], lint names should use the
plural form.

[^1]:
https://rust-lang.github.io/rfcs/0344-conventions-galore.html#lints

changelog: [`empty_enum`]: rename to `empty_enums`
2025-10-23 15:50:20 +00:00
Samuel Tardieu
82d729cacb
clippy_dev: Parsing revamp part 2/N (#15921)
Based on rust-lang/rust-clippy#15866

This adds a parsing context that can allocate from an arena. Ultimately
this will also store a source map for better error reporting, but a few
other changes are happening before that.

The arena itself is unlikely to be needed from a perf standpoint
(reading all the files should be the slow part), but having more things
be copyable is nice. For reference the perf impact of this change is
within the noise.

changelog: none
2025-10-23 09:18:46 +00:00
Jason Newcomb
bae625fed0 clippy_dev: Allocate onto an arena when parsing. 2025-10-22 19:09:23 -04:00
Jason Newcomb
7579e71c1f clippy_dev: Inline and simplify read_src_with_module. 2025-10-22 19:09:23 -04:00
Jason Newcomb
fcfab5fe4b clippy_dev: Move all parsing within a parse context. 2025-10-22 19:09:23 -04:00
Samuel Tardieu
00f68d530d
clippy_dev: parsing revamp 1/N (#15866)
Supercedes rust-lang/rust-clippy#15270

This first PR just moves the existing code and simplifies a few things.
The switch to use the new range API isn't really used in this PR , but
it's needed by future changes to avoid having to add `.clone()` all over
the place.

changelog: none
2025-10-22 16:53:49 +00:00
Samuel Tardieu
0c592df5a5
fix(match_as_ref): suggest as_ref when the reference needs to be cast (#15934)
I first implemented the naive version, which just talks about, and
suggests using, `Option::as_ref`. But the resulting error message
sounded a bit misleading -- after all, the manual implementation was
factually that of `Option::as_mut`, and we only suggest `as_ref` as a
means of downcasting. So then I added another help message to mention
the need for reference downcasting, which.. still looks awkward.

Honestly it might be the easiest to hide the reference downcasting into
the `.map` after all, so that it encapsulates _all_ the casting needed
following the switch to `as_ref`/`as_mut`.

changelog: [`match_as_ref`]: suggest `as_ref` when the reference needs
to be cast

r? @samueltardieu
2025-10-22 11:22:20 +00:00
Ada Alakbarova
22bdd9f7c9
fix(match_as_ref): suggest as_ref when the reference needs to be cast 2025-10-22 13:16:00 +02:00
Samuel Tardieu
2bb3d0c396
refactor(elidable_lifetimes): harmonize suggestion-building logic with extra_unused_type_parameters (#15908)
It's nice to come up with a clever algorithm
(https://github.com/rust-lang/rust-clippy/pull/15667), but it's even
nicer to reuse logic that already exists elsewhere.

changelog: none

r? @samueltardieu as you reviewed the original PR
2025-10-22 10:15:01 +00:00
Ada Alakbarova
5ff804e9b2
misc: move infallible stuff out of the way 2025-10-22 11:59:21 +02:00
Samuel Tardieu
fd208399ae
Make docs more clear (#15933)
`NB!` is extremely alien + not used anywhere else in repo (per github
search).

`Notes => Note`. At first thought was convention (written from
perspective of the lint), but not seen anywhere else in repo (per github
search).

Implication: clearer docs

Changes made from github web editor; no tests/checks performed.

changelog: none
2025-10-22 08:30:46 +00:00
Zylos
bab7519d5b
Update mod.rs 2025-10-21 21:43:34 -04:00
Ada Alakbarova
17f194238d
Adapt the logic from extra_unused_type_parameters
.. and add some docs to both of them
2025-10-22 01:06:13 +02:00
Samuel Tardieu
c6c71afda1
refactor(option_as_ref_cloned): move the method_call call out of the check (#15917)
This is more consistent with what the other `methods/` lints do.

changelog: none
2025-10-21 22:49:09 +00:00
Samuel Tardieu
fb82de5ed8
`manual_option_as_slice: improve diagnostics (#15926)
- Make the diagnostic message actually desribe the problem
- Always give the suggestion, by using `snippet_with_context`
- Make the suggestion verbose, because we sometimes lint multiline exprs
like `match`es

changelog: [`manual_option_as_slice`]: improve diagnostics
2025-10-21 22:07:49 +00:00
Samuel Tardieu
039b40f7c9
match_as_ref: improve diagnostics (#15928)
- Make the diagnostic message actually desribe the problem
- Make the suggestion verbose, because we lint multiline exprs

changelog: [`match_as_ref`]: improve diagnostics
2025-10-21 22:03:15 +00:00
Ada Alakbarova
81d2300862
move to methods/, for real this time 2025-10-21 22:15:15 +02:00
Ada Alakbarova
37ebd4c97e
move the lint file to under methods/
WARNING: this commit won't compile
2025-10-21 22:14:59 +02:00
Ada Alakbarova
a6e5159c7d
fix: parenthesise the receiver if needed 2025-10-21 18:11:39 +02:00
Ada Alakbarova
cb33ccd3fe
improve diagnostics 2025-10-21 16:51:33 +02:00
Ada Alakbarova
91dbaae9ad
improve diagnostics 2025-10-21 16:51:14 +02:00
Ada Alakbarova
a8fa9e1627
clean-up 2025-10-21 16:48:37 +02:00
Ada Alakbarova
c5215b6d84
clean-up a bit 2025-10-21 15:36:06 +02:00
Ada Alakbarova
d9ecbb73e8
clean-up 2025-10-21 14:17:20 +02:00
Alex Macleod
973e596eb0
option_option: split part of diagnostic message into help message (#15870)
changelog: [`option_option`]: improve diagnostic message
2025-10-20 17:54:59 +00:00
Teodoro Freund
0702934c98 manual_let_else fix when expression finishes with '}' 2025-10-20 16:22:12 +01:00
Ada Alakbarova
4e3fa960d4
refactor(option_as_ref_cloned): move the method_call call out of the check 2025-10-20 15:54:59 +02:00
Ada Alakbarova
5578908f91
chore(empty_enum): rename to empty_enums
According to the lint naming guidelines[^1], lint names should use the
plural form.

[^1]: https://rust-lang.github.io/rfcs/0344-conventions-galore.html#lints
2025-10-20 13:40:04 +02:00
Samuel Tardieu
95dd88d6c4
refactor(manual_div_ceil_: move to under operators/ (#15909)
changelog: none
2025-10-20 05:14:21 +00:00
Samuel Tardieu
1ac3cc1a83
fix(empty_enum): don't lint if all variants happen to be cfg-d out (#15911)
Fixes https://github.com/rust-lang/rust-clippy/issues/15910

changelog: [`empty_enum`]: don't lint if all variants happen to be
`cfg`-d out
2025-10-20 05:11:40 +00:00
Ada Alakbarova
c8c23bcf5b
fix(empty_enum): don't lint if all variants happen to be cfg-d out 2025-10-20 00:47:11 +02:00
Ada Alakbarova
70de06f70f
clean-up a bit 2025-10-20 00:16:29 +02:00
Ada Alakbarova
9ee9fd00d0
refactor(manual_div_ceil): move to under operators/ 2025-10-20 00:05:38 +02:00
Ada Alakbarova
c6426f5dd7
Revert "fix(elidable_lifetime_names): avoid overlapping spans in suggestions"
This reverts commit 25881bfc34.
2025-10-19 18:32:21 +02:00
Ada Alakbarova
98db098408
improve the suggestion
- make them `verbose` -- the ones spanning multiple lines were
  especially egregious
- give a more descriptive help message
2025-10-17 19:49:58 +02:00
Ada Alakbarova
b0ecbdf5a2
fix option_map_unit_fn_unfixable.rs
The errors were unrelated to the lint...
2025-10-17 19:32:48 +02:00
Ada Alakbarova
4463ba7ade
clean-up tests 2025-10-17 19:32:48 +02:00
Alex Macleod
1ecb18a182
Update link to the Code of Conduct (#15903)
Update to direct link to the Code of Conduct

changelog: none
2025-10-17 15:35:58 +00:00
alexey semenyuk
269679e435
Update link to the Code of Conduct 2025-10-17 20:03:29 +05:00
Philipp Krones
d9fb15c4b1
Rustup (#15892)
r? @ghost

changelog: none
2025-10-16 14:03:44 +00:00
Philipp Krones
9aa70f2bdd
Bump nightly version -> 2025-10-16 2025-10-16 15:57:16 +02:00
Philipp Krones
cf7aaa5ecf
Merge remote-tracking branch 'upstream/master' into rustup 2025-10-16 15:57:00 +02:00
llogiq
00e5e1b838
refactor(match_like_matches_macro): disentangle the if-let and match cases (#15854)
As discussed in [#clippy > `match_like_matches_macro` does the
work
of`match_same_arms`](https://rust-lang.zulipchat.com/#narrow/channel/257328-clippy/topic/.60match_like_matches_macro.60.20does.20the.20work.20of.60match_same_arms.60/with/544003831)

Sorry for the large number of commits -- I could've gotten away just
three ("clean-up", and one for each inlining of `find_matches_sugg` and
subsequent simplifications), but I found the diff of that quite
difficult to understand.

changelog: none
2025-10-15 20:31:28 +00:00