Alex Macleod
772ea35935
Fix diagnostic paths printed by dogfood test
2025-05-07 14:32:23 +00:00
Alex Macleod
737d3b3363
Remove some unused #![feature]s
2025-05-06 14:07:39 +00: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
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
f23772ce8c
Move lookup_path and similar into clippy_utils::paths
2025-05-04 17:13:02 +00:00
Alex Macleod
b768fbe4bc
Replace str path utils with new PathLookup type
2025-05-04 15:26:37 +00:00
Samuel Moelius
7b7a9a6ece
Don't warn about unloaded crates
...
Fixes https://github.com/rust-lang/rust-clippy/pull/14397#issuecomment-2848328221
2025-05-04 09:22:29 -04: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
Timo
0dd9722cdc
Replace some Symbol::as_str usage ( #14679 )
...
Follow up to https://github.com/rust-lang/rust-clippy/pull/14650
Replaces uses in the form `s.as_str() == "literal"`
r? @y21
changelog: none
2025-04-27 12:56:14 +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
Alex Macleod
7b337f6e25
Replace some Symbol::as_str usage
2025-04-25 01:03:03 +00: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
Timo
cc00c77607
Replace interning of string literals with preinterned symbols ( #14650 )
...
On
8ddf3676d1
it's a slight improvement
```
$ hyperfine -w 2 -r 100 -p 'touch src/cargo/lib.rs' 'cargo +master clippy' 'cargo +preintern clippy'
Benchmark 1: cargo +master clippy
Time (mean ± σ): 6.908 s ± 0.063 s [User: 6.134 s, System: 0.690 s]
Range (min … max): 6.757 s … 7.045 s 100 runs
Benchmark 2: cargo +preintern clippy
Time (mean ± σ): 6.815 s ± 0.065 s [User: 6.039 s, System: 0.692 s]
Range (min … max): 6.653 s … 6.968 s 100 runs
Summary
cargo +preintern clippy ran
1.01 ± 0.01 times faster than cargo +master clippy
```
Part 1 of removing `Symbol <-> str` conversions
changelog: none
2025-04-21 14:38:52 +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
Alex Macleod
8843067aec
manual_ok_err: don't lint subpatterns
2025-04-20 22:52:40 +00:00
Alex Macleod
077475f1a5
ptr_cast_constness: show snippet from the right context (#14622 )
...
changelog: [`ptr_cast_constness`]: do not replace suggestion by content
of macro
Fixes rust-lang/rust-clippy#14621
2025-04-20 17:18:52 +00:00
yanglsh
c6d76bb69d
fix: needless_collect does not consider side effects
2025-04-19 16:45:58 +08:00
yanglsh
86a10f01d1
fix: double_ended_iterator_last FP when iter has side effects
2025-04-19 16:45:58 +08:00
Alex Macleod
b52bd96713
Replace interning of string literals with preinterned symbols
2025-04-18 22:44:16 +00:00
Timo
781fdab9a9
Move internal lints to their own crate ( #13223 )
...
This makes it so switching the internal feature on/off no longer
rebuilds `clippy_lints`.
r? @flip1995
changelog: none
2025-04-18 12:04:08 +00:00
Timo
bcd76c3384
empty_enum_variants_with_brackets: Do not lint reachable enums and enum variants used as functions in the same crate (#12971 )
...
Fixes #12551
changelog: [`empty_enum_variants_with_brackets`]: Do not lint reachable
enums or enums which are used as functions within the same crate.
r? @xFrednet
2025-04-18 09:45:02 +00:00
Aneesh K
fa9254feaf
Do not lint reachable enums and enum variants used as functions in the same crate
2025-04-17 21:59:06 +05:30