Commit graph

22164 commits

Author SHA1 Message Date
Samuel Tardieu
a895265a4e
Do not warn about shadowing in a destructuring assigment (#14381)
When lowering a destructuring assignment from AST to HIR, the compiler
will reuse the same identifier name (namely `sym::lhs`) for all the
fields. The desugaring must be checked for to avoid a false positive of
the `shadow_unrelated` lint.

Fix #10279
Fix #14377

changelog: [`shadow_unrelated`]: prevent false positive in destructuring
assignments
2025-03-27 11:59:27 +00:00
Samuel Tardieu
d9913dd6ad Do not warn about shadowing in a destructuring assigment
When lowering a destructuring assignment from AST to HIR, the compiler
will reuse the same identifier name (namely `sym::lhs`) for all the
fields. The desugaring must be checked for to avoid a false positive 
of the `shadow_unrelated` lint.
2025-03-27 12:31:54 +01:00
dswij
764c1b6d16
remove obsolete "Known Problems" in ok_expect (#14458)
It looks like `ok_expect` already
[checks](b27a2bbe26/clippy_lints/src/methods/ok_expect.rs (L16))
for the presence of the `Debug`.

changelog: none
2025-03-27 06:08:16 +00:00
Catherine Flores
3e528672a7
more natural suggestions for cmp_owned (#14247)
Dereferencing string literals in suggestions is redundant.

changelog: [`cmp_owned`]: more natural suggestions are provided for
string literals now

fixes #8103
2025-03-27 00:00:12 +00:00
Manish Goregaokar
c4789a014f
Prevent including preceeding whitespaces if line contains non blanks (#14480)
This extra condition prevents a problem when removing the '}' in:
```rust
  ( // There was an opening bracket after the parenthesis, which has been removed
    // This is a comment
   })
```
Removing the whitespaces, including the linefeed, before the '}', would
put the closing parenthesis at the end of the `// This is a comment`
line, which would make it part of the comment as well. In this case, it
is best to keep the span on the '}' alone.

changelog: none

Note to reviewer: `manual_inspect` and `collapsible_if` were two lints
exhibiting this problem in cooked up test cases, which have been
included as non-regression tests.
2025-03-26 22:03:17 +00:00
Samuel Tardieu
9b1945d9fb Prevent including preceeding whitespaces if line contains non blanks
This extra condition prevents a problem when removing the '}' in:
```rust
  ( // There was an opening bracket after the parenthesis, which has been removed
    // This is a comment
   })
```
Removing the whitespaces, including the linefeed, before the '}', would put the
closing parenthesis at the end of the `// This is a comment` line, which would
make it part of the comment as well. In this case, it is best to keep the span
on the '}' alone.
2025-03-26 21:10:09 +01:00
Samuel Tardieu
fe4dd5b92e
chore: fix some comments (#14475)
*Please write a short comment explaining your change (or "none" for
internal only changes)*

remove redundant words in comment

changelog: none
2025-03-26 11:35:57 +00:00
todaymoon
a8bfafe929 chore: fix some comments
Signed-off-by: todaymoon <csgcgl@foxmail.com>
2025-03-26 17:40:11 +08:00
dswij
939d5f93eb
fix: option_if_let_else suggests wrongly when coercion requires explicit cast (#14389)
Closes #11059

changelog: `option_if_let_else`: fix wrong suggestion when coersion
requires explicit cast
2025-03-26 05:08:33 +00:00
dswij
4517b4260f
Fix various typos in lint messages, descriptions and comments (#14459)
changelog: none
2025-03-26 05:05:21 +00:00
Philipp Krones
d09e658677
Apply collapsible if to Clippy sources (#14451)
This PR enables the new ability to collapse `if` statements containing
comments (without losing them) in Clippy sources, excluding tests and
lintcheck, where the default behaviour (no collapsing in presence of
comments) is preserved.

To be applied after #14231. When it is applied, #14455 will be marked as
ready for review, then #14228 afterwards.

changelog: none

r? ghost
2025-03-25 19:26:36 +00:00
Samuel Tardieu
6509de3bfb Fix situations identified by collapsible_if new hits 2025-03-25 19:50:24 +01:00
Manish Goregaokar
1893e1e5e7
Unify manual_unwrap_or and manual_unwrap_or_default code (#14332)
Both lints share a lot of characteristics but were implemented in
unrelated ways. This unifies them, saving around 100 SLOC in the
process, and making one more test trigger the lint. Also, this removes
useless blocks in suggestions.

Close #12956

changelog: none
2025-03-25 17:34:00 +00:00
Samuel Tardieu
94233fb0ee Unify manual_unwrap_or and manual_unwrap_or_default code
Both lints share a lot of characteristics but were implemented in
unrelated ways. This unifies them, saving around 100 SLOC in the
process, and making one more test trigger the lint. Also, this removes
useless blocks in suggestions.
2025-03-25 18:03:41 +01:00
Alex Macleod
a001ae3be8
Move uninlined_format_args back to style (#14160)
The `uninlined_format_args` was temporarily downgraded to `pedantic` in
part because rust-analyzer was not fully supporting it at the time, per
#10087. The support has been added over [a year
ago](https://github.com/rust-lang/rust-analyzer/issues/11260), so seems
like this should be back to style.

Another source of the initial frustration was fixed since then as well -
this lint does not trigger by default in case only some arguments can be
inlined.

changelog: [`uninlined_format_args`]: move back to `style`
2025-03-25 16:25:04 +00:00
Alejandra González
d95bdcfb50
Rename Sugg::maybe_par() into Sugg::maybe_paren() (#14457)
"paren" is used throughout the Clippy codebase as an abbreviation for
"parentheses".

changelog: none
2025-03-25 16:13:29 +00:00
Yuri Astrakhan
1ca79a8797 test fixes 2025-03-25 10:49:14 -04:00
Samuel Tardieu
9d78426b0d
suggest is_some_and instead of map_or in case_sensitive_file_extension_comparions (#14358)
close #14357

changelog: [`case_sensitive_file_extension_comparisons`]: suggest
`is_some_and` to suppress other lint warnings
2025-03-25 14:47:56 +00:00
Yuri Astrakhan
8e50cfacdf make tests consistent 2025-03-25 10:37:04 -04:00
Yuri Astrakhan
d063e09d10 Move uninlined_format_args to style
This lint was downgraded to `pedantic` in part because rust-analyzer was not fully supporting it at the time per #10087. The support has been added over [a year ago](https://github.com/rust-lang/rust-analyzer/issues/11260), so seems like this should be back to style.

Another source of the initial frustration was fixed since then as well - this lint does not trigger by default in case only some arguments can be inlined.
2025-03-25 10:27:20 -04:00
Yuri Astrakhan
1d890389ff Move uninlined_format_args to style
This lint was downgraded to `pedantic` in part because rust-analyzer was not fully supporting it at the time per #10087. The support has been added over [a year ago](https://github.com/rust-lang/rust-analyzer/issues/11260), so seems like this should be back to style.

Another source of the initial frustration was fixed since then as well - this lint does not trigger by default in case only some arguments can be inlined.
2025-03-25 10:27:19 -04:00
lapla-cogito
e78216c4a1
suggest is_some_and instead of map_or in case_sensitive_file_extension_comparions 2025-03-25 21:26:35 +09:00
Alejandra González
f5d81a314a
Fix type error in lint description (#14466)
Fix #14465

changelog: none
2025-03-25 12:25:57 +00:00
Timo
d88818d1e7
Rename inconsistent_struct_constructor configuration; don't suggest deprecated configurations (#14280)
This PR does two things:
- It renames `inconsistent_struct_constructor`'s configuration from
`lint-inconsistent-struct-field-initializers` to
`check-inconsistent-struct-field-initializers`. (I should have suggested
`check-...` in
[#13737](https://github.com/rust-lang/rust-clippy/pull/13737#discussion_r1875118516).)
- It causes Clippy to no longer suggest deprecated configurations.
(Previously, Clippy would suggest `cyclomatic-complexity-threshold`, for
example.)

r? @y21

changelog: Rename `lint-inconsistent-struct-field-initializers` to
`check-inconsistent-struct-field-initializers`
changelog: No longer suggest deprecated configurations
2025-03-25 11:56:47 +00:00
Samuel Tardieu
ca48e461a9
Add myself to reviewer rotation (#14468)
changelog: none
2025-03-25 10:24:29 +00:00
Samuel Tardieu
b7cbb4ec8c Add myself to reviewer rotation 2025-03-25 11:19:16 +01:00
Samuel Tardieu
de8c404ed4 Fix type error in lint description 2025-03-25 09:44:48 +01:00
Samuel Tardieu
0ff7fad3da
Use code for references to other lints in as_conversions docs (#14283)
changelog: none
2025-03-25 08:37:36 +00:00
Timo
9c6cb5150f
wildcard_imports: lint on pub use if asked to (#14182)
`warn_on_all_wildcard_imports` should warn on all wildcard imports,
including the reexported ones.

Fix #13660

changelog: [`warn_on_all_wildcard_imports`]: when asked to warn on all
wildcard imports, include the reexported ones
2025-03-25 00:08:45 +00:00
Samuel Tardieu
621911a677 Fix various typos in lint messages, descriptions and comments 2025-03-24 16:04:32 +01:00
Samuel Tardieu
809c931804 wildcard_imports: lint on pub use if asked to
`warn_on_all_wildcard_imports` should warn on all wildcard imports,
including the reexported ones.
2025-03-24 15:49:29 +01:00
lapla-cogito
e8c06a71cf
remove obsolete "Known Problems" in ok_expect 2025-03-24 22:27:44 +09:00
Samuel Moelius
315e9aa79f Don't check deprecated configs in configs_are_tested test 2025-03-24 09:06:13 -04:00
Samuel Tardieu
962329fd9d Rename Sugg::maybe_par() into Sugg::maybe_paren()
"paren" is used throughout the Clippy codebase as an abbreviation for
"parentheses".
2025-03-24 08:44:54 +01:00
Samuel Moelius
969b5ad65c Don't suggests deprecated congurations 2025-03-23 15:25:27 -04:00
Samuel Moelius
88b590bf46 lint-inconsistent-... -> check-inconsistent-... 2025-03-23 15:22:37 -04:00
Alex Macleod
b27a2bbe26
Clarify example for unconditional_recursion (#14385)
Clarify example for unconditional_recursion

changelog: none
2025-03-23 13:49:21 +00:00
Philipp Krones
e9aed8764e
set concurrency for the deploy job (#14448)
In the current GitHub Actions CI/CD setup, the `deploy` job is not
triggered when a PR is enqueued in the merge queue but only when it is
merged. Since concurrency is not configured for this job, deployments
may fail for later PRs if multiple PRs are merged in quick succession.
(e.g. the deployment for [this
commit](c418714518)
was successful, but the deployment for [this
commit](0a141ab7b8)
that was pushed to `main` immediately afterward failed. (edit: the
latter deployment seems to be rerun))

changelog: none

r? flip1995
2025-03-23 12:15:07 +00:00
lapla-cogito
3786c07463
remove the notation of the deploy job 2025-03-23 21:09:28 +09:00
lapla-cogito
d8dff61275
set concurrency for the deploy job 2025-03-23 21:08:41 +09:00
Philipp Krones
07e7414fb1
fix: nonminimal_bool wrongly showed the macro definition (#14424)
Closes #14404

changelog: [`nonminimal_bool`]: fix macro definition wrongly showed in
suggestions.
2025-03-23 11:19:41 +00:00
Philipp Krones
cad9083d71
Lint more cases in collapsible_if (#14231)
Replace the use of `Sugg::ast()` which prevented combining `if` together
when they contained comments by span manipulation.

A new configuration option `lint_commented_code`, which is `true` by
default, allows opting out from this behavior.

If reviewed on GitHub, the second commit of this PR is best looked at
side by side, with whitespace differences turned off.

changelog: [`collapsible_if`]: lint more cases
2025-03-23 11:17:46 +00:00
alexey semenyuk
63e7815390 Fix example for unconditional_recursion 2025-03-23 13:28:36 +05:00
yanglsh
8bc164b818 fix: option_if_let_else suggests wrongly when coercion 2025-03-23 12:49:23 +08:00
Alex Macleod
c033a4c741
Document and improve (a lot) lintcheck --perf (#14194)
In #14116 we added a benchmarking option for Lintcheck, this commit adds
a new chapter to the book AND improves that option into a more usable
state.

It's recommended to review one commit at a time.

- **Document how to benchmark with lintcheck --perf**
- **Several improvements on lintcheck perf (desc.)**

    - Now lintcheck perf deletes target directory after benchmarking,
benchmarking with a cache isn't very useful or telling of any
precise outcome.

    - Support for benchmarking several times without having to do
a cargo clean.

    - Compress perf.data

changelog: none
2025-03-23 00:01:53 +00:00
Alex Macleod
6166f60617
Add ignore_without_reason lint (#13931)
Closes #13066 (tests that are ignored with no reason message).

changelog: Add `ignore_without_reason` lint
2025-03-22 14:56:43 +00:00
Jason Newcomb
a65cc366f2
Add regression tests for suspicious_doc_comments (#14268)
Related to #14265 which was fixed automatically by the latest rustup.

changelog: none

*Edit: description, changelog, keep only tests*
2025-03-22 14:38:26 +00:00
Jason Newcomb
b41f2e4653
Emit collapsible_match at the right node (#14311)
Fixes https://github.com/rust-lang/rust-clippy/issues/14281

changelog: none
2025-03-22 14:35:24 +00:00
yanglsh
282b61b641 fix: nonminimal_bool wrongly showed the macro definition 2025-03-22 22:20:22 +08:00
Jason Newcomb
d9934328dd
set the applicability of op_ref to MachineApplicable (#14438)
#2597 appears to be already resolved, so the applicability of `op_ref`
can be set to `MachineApplicable`.

close #2597

changelog: [`op_ref`]: set the applicability to `MachineApplicable`
2025-03-22 14:16:52 +00:00