Samuel Tardieu
bde939058b
char::is_digit() is const-stable only since Rust 1.87
...
The `to_digit_is_some()` lint suggests using `char::is_digit()`. It
should not trigger in const contexts before Rust 1.87.
2025-05-10 00:20:55 +02:00
Alejandra González
16fd2a83d7
Fix integer_division false negative for NonZero denominators ( #14664 )
...
Close rust-lang/rust-clippy#14652
changelog: [`integer_division`]: fix false negative for NonZero
denominators
2025-05-09 20:50:04 +00:00
Samuel Tardieu
756de2ab82
remove superseded lints ( #14703 )
...
changelog: [`transmute_float_to_int, transmute_int_to_char,
transmute_int_to_float`, `transmute_num_to_bytes`]: remove lints, now in
rustc
these lints are now mostly in rustc, so they dont need to be in clippy
anymore
https://github.com/rust-lang/rust/pull/136083#discussion_r2009897120
pending https://github.com/rust-lang/rust/pull/140431 :
transmute_int_to_bool
<!-- TRIAGEBOT_START -->
<!-- TRIAGEBOT_SUMMARY_START -->
### Summary Notes
- ["Rust version of new lints should be checked" by
@samueltardieu](https://github.com/rust-lang/rust-clippy/pull/14703#issuecomment-2861982576 )
Generated by triagebot, see
[help](https://forge.rust-lang.org/triagebot/note.html ) for how to add
more
<!--
TRIAGEBOT_SUMMARY_DATA_START$${"entries_by_url":{"https://github.com/rust-lang/rust-clippy/pull/14703#issuecomment-2861982576 ":{"title":"Rust
version of new lints should be
checked","comment_url":"https://github.com/rust-lang/rust-clippy/pull/14703#issuecomment-2861982576 ","author":"samueltardieu"}}}$$TRIAGEBOT_SUMMARY_DATA_END
-->
<!-- TRIAGEBOT_SUMMARY_END -->
<!-- TRIAGEBOT_END -->
2025-05-09 16:12:59 +00:00
bendn
35bdd25e32
remove superseded lints
2025-05-09 19:25:55 +07:00
relaxcn
b73d3b4384
fix issue-14725
2025-05-09 01:21:14 +08:00
Alexey Semenyuk
1fbfbb59e9
Fix integer_division false negative for NonZero denominators
2025-05-08 16:12:47 +05:00
dswij
f88f9a9dc5
Fix manual_let_else FN when diverges on simple enum variant ( #14732 )
...
Closes rust-lang/rust-clippy#14598
Implemented checks for simple enum variants when checking if match arms
are disjointed.
changelog: [`manual_let_else`] fix FN when diverges on simple enum
variant
2025-05-07 16:33:07 +00:00
Samuel Tardieu
50cff118d8
Make let_with_type_underscore help message into a suggestion ( #14749 )
...
changelog: none
2025-05-07 16:26:54 +00:00
Alex Macleod
8c045221b5
Make let_with_type_underscore help message into a suggestion
2025-05-07 15:19:40 +00:00
Jason Newcomb
ca78fb4031
unwrap_used, expect_used: accept macro result as receiver (#14575 )
...
changelog: [`unwrap_used`, `expect_used`]: lint even when the receiver
is a macro expansion result
This also paves the way for expanding more method call lints to expanded
receivers or arguments.
Fixes rust-lang/rust-clippy#13455
2025-05-07 08:09:47 +00:00
Samuel Tardieu
999db5cdc6
unwrap_used, expect_used: accept macro result as receiver
2025-05-07 10:04:52 +02:00
Manish Goregaokar
fc811f7e2e
item_name_repetitions: exclude enum variants with identical path components (#14619 )
...
fix rust-lang/rust-clippy#13637
As suggested in the PR above, we should not lint enum variants
containing matching path names.
changelog: [`item_name_repetitions`]: exclude enum variants with
identical path components
2025-05-06 18:30:14 +00:00
Alex Macleod
737d3b3363
Remove some unused #![feature]s
2025-05-06 14:07:39 +00:00
yanglsh
d0af404b19
fix: manual_let_else FN when diverges on simple enum variant
2025-05-06 14:42:18 +08:00
yanglsh
e7acf5c9b9
fix: collapsible_if FP on block stmt before expr
2025-05-06 14:25:21 +08:00
Samuel Tardieu
50e0bf1b71
Gate collapsible_if let_chains lints on edition 2024 and MSRV ( #14723 )
...
The MSRV being for crates targeting 1.85-1.87 on edition 2024
This enables the lint for regular nightly users without the feature gate
enabled
r? @samueltardieu
Fixes https://github.com/rust-lang/rust-clippy/issues/14678
changelog: none
2025-05-06 05:40:37 +00:00
Aaron Ang
e89cf4d389
item_name_repetitions: exclude enum variants with identical path components
2025-05-05 20:15:50 -07:00
Alex Macleod
8c93668a71
Gate collapsible_if let_chains lints on edition 2024 and MSRV
2025-05-06 02:23:28 +00:00
Jason Newcomb
c1586e141f
Replace str path utils with new PathLookup type ( #14705 )
...
The `&[&str]` path based `clippy_utils` have been removed and replace
with a new type `PathLookup`:
-
[`match_trait_method`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.match_trait_method.html )
-
[`match_qpath`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.match_qpath.html )
-
[`match_path`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.match_path.html )
-
[`match_any_def_paths`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.match_any_def_paths.html )
-
[`match_def_path`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.match_def_path.html )
-
[`match_type`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/ty/fn.match_type.html )
-
[`get_trait_def_id`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.get_trait_def_id.html )
Internally `PathLookup` is a lazy call to `lookup_path` (the new name
for
[`def_path_res`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.def_path_res.html )
to distinguish it from
[`path_res`](https://doc.rust-lang.org/nightly/nightly-rustc/clippy_utils/fn.path_res.html ))
The `invalid_paths` internal lint is removed, it could be reimplemented
but it feels redundant since every path should be covered by a test
anyway
### User facing changes
- `manual_saturating_arithmetic` now checks for `u32::MAX/MIN` instead
of only detecting the legacy numeric consts (`std::u32::MAX/MIN`),
`clippy::legacy_numeric_constants` will redirect usages of the legacy
versions to the new one
- `allow-invalid = true` now suppresses all invalid path warnings,
currently you can run into a warning that can't be ignored in some
situations, e.g. with `serde` without the `derive` feature
```
warning: expected a macro, found a trait
--> /home/gh-Alexendoo/temp/clippy.toml:2:5
|
2 | { path = "serde::Serialize", allow-invalid = true },
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
- Re-exports of primitives types like `std::primitive::*` no longer work
in `disallowed-types`, this seems acceptable since it would be unusual
to deny a primitive this way rather than writing e.g. `usize`. Type
aliases such as `c_char` are unaffected
- A similar slight performance improvement to
https://github.com/rust-lang/rust-clippy/pull/14650
```bash
$ hyperfine -w 2 -p 'touch src/cargo/lib.rs' 'cargo +master clippy'
'cargo +lazy-paths clippy'
```
```
Benchmark 1: cargo +master clippy
Time (mean ± σ): 6.829 s ± 0.064 s [User: 6.079 s, System: 0.673 s]
Range (min … max): 6.705 s … 6.907 s 10 runs
Benchmark 2: cargo +lazy-paths clippy
Time (mean ± σ): 6.765 s ± 0.064 s [User: 5.984 s, System: 0.698 s]
Range (min … max): 6.636 s … 6.834 s 10 runs
Summary
cargo +lazy-paths clippy ran
1.01 ± 0.01 times faster than cargo +master clippy
```
changelog: none
2025-05-05 21:46:40 +00:00
Jason Newcomb
f62f269658
Fix manual_unwrap_or_default FP on ref binding ( #14731 )
...
Closes rust-lang/rust-clippy#14716
changelog: [`manual_unwrap_or_default`] fix FP on ref binding
2025-05-05 21:45:13 +00:00
Alejandra González
689e62b3b2
fix: unused_async FP on default impl ( #14720 )
...
Closes rust-lang/rust-clippy#14704
changelog: [`unused_async`] fix FP on default impl
2025-05-05 00:43:30 +00:00
Alex Macleod
b768fbe4bc
Replace str path utils with new PathLookup type
2025-05-04 15:26:37 +00:00
yanglsh
7106e21227
fix: manual_unwrap_or_default FP on ref binding
2025-05-03 23:38:52 +08:00
Manish Goregaokar
56f018286b
fix: manual_slice_fill FP on IndexMut overload ( #14719 )
...
Closes rust-lang/rust-clippy#14685
changelog: [`manual_slice_fill`] fix FP on `IndexMut` overload
2025-05-02 17:07:07 +00:00
yanglsh
33ea0b482c
fix: manual_slice_fill FP on IndexMut overload
2025-05-02 15:09:00 +08:00
Philipp Krones
43797675c2
Merge remote-tracking branch 'upstream/master' into rustup
2025-05-01 09:50:42 +02:00
yanglsh
782c6065c4
fix: unused_async FP on default impl
2025-05-01 14:50:23 +08:00
Manish Goregaokar
549107dbad
Fix zombie_processes FP inside closures ( #14696 )
...
Closes rust-lang/rust-clippy#14677
changelog: [`zombie_processes`] fix FP inside closures
2025-04-28 15:41:40 +00:00
Jason Newcomb
542762e8af
fix: unused_unit suggests wrongly when unit never type fallback ( #14609 )
...
Closes rust-lang/rust-clippy#14577 .
Migrate this lint to late pass and avoids `unit_never_type_fallback`
since it is no longer permitted in Rust 2024.
changelog: [`unused_unit`] fix wrong suggestions when unit never type
fallback
2025-04-27 19:14:47 +00:00
yanglsh
5123ad5904
Fix zombie_processes FP inside closures
2025-04-27 16:28:06 +08:00
yanglsh
5d8fb77872
fix: unused_unit suggests wrongly when unit never type fallback
2025-04-27 15:02:49 +08:00
dswij
39a408664b
manual_div_ceil: fix suggestions when macro is involved (#14666 )
...
here is my small fix
changelog: fix suggestion span to avoid showing macro name in
`.div_ceil()` suggestion
i changed this line
`let divisor_snippet = snippet_with_applicability(cx,
rhs.spansource_callsite(), "..", applicability);`
to this line
`let divisor_snippet = snippet_with_applicability(cx, rhs.span, "..",
applicability);`
to fix problem where this warning in macro expands like this
```rust
4 | let _ = (x + 7) / 8;
| ^^^^^^^^^^^ help: consider using `.div_ceil()`: `x.div_ceil(y!())`
```
[play it
yourself](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=397aa8cd2ffffb24a286fbddbc75446c )
as you can see here it looks like `x.div_ceil(y!())` and contains macro
signature
so i fixed this problem, i will look closely if there any more problems
like this and fix them in order
**Related issue**
fixes
[rust-lang/rust-clippy#14665 ](https://github.com/rust-lang/rust-clippy/issues/14665 )
2025-04-27 03:13:19 +00:00
dswij
58cfdb72a8
fix: equatable_if_let suggests wrongly when involving reference ( #14504 )
...
Closes #8710
changelog: [`equatable_if_let`] fix wrong suggestions when involving
reference
2025-04-26 14:52:32 +00:00
Jason Newcomb
ff307bac14
fix: unnecessary_cast suggests extra brackets when in macro ( #14643 )
...
Closes rust-lang/rust-clippy#14640
changelog: [`unnecessary_cast`] fix extra brackets in suggestions when
in macro
2025-04-26 11:55:15 +00:00
yanglsh
ad69347912
fix: equatable_if_let suggests wrongly when involving reference
2025-04-26 15:51:40 +08:00
yanglsh
3f72ffa80e
fix: unnecessary_cast suggests extra brackets when in macro
2025-04-26 15:09:04 +08:00
yuk1ty
148c9a1981
Fix error message for static references or mutable references
2025-04-26 14:48:30 +09:00
Kivooeo
fc12b5b6d8
fix-issue-14665
2025-04-25 01:39:35 +05:00
Alex Macleod
736be8bbb1
Consistently refer to the ? operator
2025-04-24 13:40:57 +00:00
bendn
6e64338a49
Suggest {to,from}_ne_bytes for transmutations between arrays and integers, etc
2025-04-24 13:14:36 +07:00
Alex Macleod
7c5312bdab
Reword needless_question_mark diagnostics and docs
2025-04-23 19:07:27 +00:00
Philipp Krones
ff428d91c2
Merge commit ' 0621446356' into clippy-subtree-update
2025-04-22 18:24:43 +02:00
Alex Macleod
2422f0b9ac
Restrict the cases where ptr_eq triggers ( #14526 )
...
`ptr_eq` was recently enhanced to lint on more cases of raw pointers
comparison:
- lint on all raw pointer comparison, by proposing to use
`[core|std]::ptr::eq(lhs, rhs)` instead of `lhs == rhs`;
- removing one symetric `as usize` on each size if needed
- peeling any level of `as *[const|mut] _` if the remaining expression
can still be coerced into the original one (i.e., is a ref or raw
pointer to the same type as before)
The current change restricts the lint to the cases where at least one
level of symetric `as usize`, or any conversion to a raw pointer, could
be removed. For example, a direct comparaison of two raw pointers will
not trigger the lint anymore.
changelog: [`ptr_eq`]: do not lint when comparing two raw pointers
directly with no casts involved
Fixes rust-lang/rust-clippy#14525
2025-04-22 16:05:34 +00:00
Jason Newcomb
c3fb102a41
Consider side effects when rewriting iterator behaviors ( #14490 )
...
Closes #9191
Closes #14444
Closes #8055
Adds a new helper to partly check for side effects by recursively
checking if the iterator type contains closures with mutable captures.
changelog: [`double_ended_iterator_last`] fix FP when iter has side
effects
changelog: [`needless_collect`] fix lint not consider side effects
2025-04-22 13:21:54 +00:00
yanglsh
a50e043d32
Expand mutable capture check for is_iter_with_side_effects()
2025-04-22 20:55:07 +08:00
Jason Newcomb
aeb6ac9a0b
Fix question_mark suggesting when type is behind Deref include parentheses ( #14655 )
...
Close rust-lang/rust-clippy#14615
changelog: [`question_mark`]: when type is behind Deref include
parentheses
2025-04-22 01:58:56 +00:00
Alexey Semenyuk
7a4d523200
Fix question_mark suggesting when type is behind Deref include parentheses
2025-04-21 22:25:36 +05:00
Timo
083ea7e6c4
manual_ok_err: don't lint subpatterns (#14661 )
...
Fixes https://github.com/rust-lang/rust-clippy/issues/14660
changelog: none
2025-04-21 14:47:02 +00:00
dswij
f829f8cd5b
Make borrow_as_ptr flag implicit casts as well ( #14408 )
...
While I like replacing `&x` by `&raw const x` and `&mut x` by `&raw mut
x`, I'm less sure I like the suggested reborrows such as `&raw const
*p`. There was one in Clippy sources, see the PR diff.
@RalfJung, any opinion on this?
Fix #14406
changelog: [`borrow_as_ptr`]: lint implicit casts as well
2025-04-21 12:38:11 +00:00
Alejandra González
48430c2970
iter_kv_map: recognize references on maps as well (#14596 )
...
Fix rust-lang/rust-clippy#14595
changelog: [`iter_kv_map`]: recognize references on maps as well
2025-04-21 01:44:34 +00:00