Commit graph

22214 commits

Author SHA1 Message Date
Oli Scherer
e5c1d1cb7e Remove the Option part of range ends in the HIR 2025-03-06 10:47:40 +00:00
yanglsh
a028651184 fix: missing_const_for_fn FP on unstable const traits 2025-03-06 14:25:06 +08:00
Catherine Flores
81643e297c
unnecessary_to_owned: don't call iter() on a temporary object (#14243)
fix #14242

changelog: [`unnecessary_to_owned`]: don't call `iter` on a temporary
object
2025-03-05 23:17:32 +00:00
lapla-cogito
06f797d3f7
don't call iter() on a temporary object in unnecessary_to_owned 2025-03-06 07:55:01 +09:00
lapla-cogito
27e69a80f5
apply is_expr_temporary_value to Clippy source 2025-03-06 07:54:54 +09:00
lapla-cogito
2fda4f6bb8
add is_expr_temporary_value helper function 2025-03-06 07:54:48 +09:00
Catherine Flores
231bf457ba
Make struct_field_names check private fields of public structs. (#14076)
Currently, If a struct is `pub` and its field is private, and
`avoid-breaking-exported-api = true` (default), then
`struct_field_names` will not lint the field, even though changing the
field’s name is not a breaking change. This is because the
breaking-exported-api condition was checking the visibility of the
struct, not its fields (perhaps because the same code was used for
enums). With this change, Clippy will check the field’s effective
visibility only.

Note: This change is large because some functions were moved into an
`impl` to be able to access more configuration. Consider viewing the
diff with whitespace ignored.

changelog: [`struct_field_names`]: also check private fields of public
structs
2025-03-05 22:38:15 +00:00
Catherine Flores
06e75900f7
Refactor function after adding a new diagnostic item (#14306)
The `has_eligible_receiver()` function had been adapted *a minima* when
the `sym::ControlFlow` diagnostic item has been added to rustc. This
refactors the function content to make its meaning clearer.

changelog: none
2025-03-05 22:35:00 +00:00
Catherine Flores
ad633bedd6
Use size_of from the prelude instead of imported (#14355)
Use `std::mem::{size_of, size_of_val, align_of, align_of_val}` from the
prelude instead of importing or qualifying them.

These functions were added to all preludes in Rust 1.80.

changelog: none
2025-03-05 21:57:30 +00:00
lapla-cogito
1cd7022fb4
fix incorrect suggestions related to parentheses in needless_return 2025-03-06 06:27:00 +09:00
Alex Macleod
8108bd8d43
Remove Known problems section for vec_box (#14252)
Remove Known problems section for `vec_box` since
[issue](https://github.com/rust-lang/rust-clippy/issues/3530#issuecomment-446058452)
> Vec<Box<T: Sized>> makes sense if T is a large type

can be handled

> The lint already checks that the type's size is lower than a threshold
to avoid linting on large types.

changelog: none
2025-03-05 13:41:31 +00:00
Thalia Archibald
e8cd3d4752 Use size_of from the prelude instead of imported
Use `std::mem::{size_of, size_of_val, align_of, align_of_val}` from the
prelude instead of importing or qualifying them.

These functions were added to all preludes in Rust 1.80.
2025-03-05 00:37:40 -08:00
llogiq
9538e5bcd0
Walk back to the root context to compute the span (#14349)
Since the error kind (`io::ErrorKind::other`) is in the root context,
the error message must be found in the root context as well to compute
the correct span to remove.

Fix #14346

changelog: [`io_error_other`]: fix non-applicable suggestion

r? @llogiq
2025-03-05 05:52:19 +00:00
Kevin Reid
8c73b76fb2 Move check_variant() code into a method of ItemNameRepetitions too. 2025-03-04 10:49:13 -08:00
Kevin Reid
2067375697 Make struct_field_names lint on private fields of public structs.
Currently, If a struct is `pub` and its field is private, and
`avoid-breaking-exported-api = true` (default), then `struct_field_names`
will not lint the field, even though changing the field’s name is not a
breaking change. This is because the breaking-exported-api condition was
checking the visibility of the struct, not its fields (perhaps because
the same code was used for enums). With this change, Clippy will check
 the field’s effective visibility only.

Note: This change is large because some functions were moved into an
`impl` to be able to access more configuration. Consider viewing the
diff with whitespace ignored.
2025-03-04 10:49:13 -08:00
Catherine Flores
2440f51696
don't trigger unnecessary_debug_formatting in tests (#14347)
close #14345

changelog: [`unnecessary_debug_formatting`]: don't lint in tests
2025-03-04 16:35:09 +00:00
Alex Macleod
dd8cf052c2
better help for mixed_case_hex_literals (#14235)
It can be error-prone for developers to manually change literals with
mixed uppercase and lowercase letters into consistently all-lowercase or
all-uppercase literals. Therefore, this lint rule should suggest
alternative literals.

changelog: [`mixed_case_hex_literals`]: add alternative suggestions
2025-03-04 14:10:44 +00:00
Samuel Tardieu
9275ae994b Walk back to the root context to compute the span
Since the error kind (`io::ErrorKind::other`) is in the root context,
the error message must be found in the root context as well to compute
the correct span to remove.
2025-03-04 12:00:38 +01:00
decryphe
5df68878bf Make alphabetic ordering in module item groups configurable (new default: off)
From feedback to this lint after its inclusion in clippy 1.82, this has
turned out to be the most requested improvement. With this improvement,
it is possible to make the lint check certain top-level structural
checks on modules (e.g. use statements and module inclusions at the top),
but still leaving everything else up to the developer.
2025-03-04 09:50:47 +01:00
decryphe
9f0d819ced Create helper function to suggest a candidate in case of a typo 2025-03-04 09:50:47 +01:00
lapla-cogito
e6a4cf63ad
don't trigger unnecessary_debug_formatting in tests 2025-03-04 17:46:15 +09:00
lapla-cogito
e587a5d0f0
better help for mixed_case_hex_literals 2025-03-04 17:43:14 +09:00
Philipp Krones
cdc1d9d87a
Lint more cases with ptr_eq (#14339)
This PR:

- lints more case of raw pointer comparisons
- do not omit the named function to raw pointer conversion before
suggesting
- trigger the `ptr_eq` lint only if `cmp_null` doesn't trigger first, as
this is a more specialized version
- lints against `!=` in addition to `==`

The `ptr_eq` code has been moved from under `operators` to `ptr.rs`, in
order to benefit from factorization.

Fix #14337

changelog: [`ptr_eq`]: handle more cases
2025-03-04 08:15:00 +00:00
Philipp Krones
b4b7c7b057
Use the latest nightly rust to run linkcheck (#14348)
changelog: none
2025-03-04 07:55:17 +00:00
Samuel Tardieu
414136239b Use the latest nightly rust to run linkcheck 2025-03-04 08:50:26 +01:00
bors
1f0d0571c5 Auto merge of #137959 - matthiaskrgr:rollup-62vjvwr, r=matthiaskrgr
Rollup of 12 pull requests

Successful merges:

 - #135767 (Future incompatibility warning `unsupported_fn_ptr_calling_conventions`: Also warn in dependencies)
 - #137852 (Remove layouting dead code for non-array SIMD types.)
 - #137863 (Fix pretty printing of unsafe binders)
 - #137882 (do not build additional stage on compiler paths)
 - #137894 (Revert "store ScalarPair via memset when one side is undef and the other side can be memset")
 - #137902 (Make `ast::TokenKind` more like `lexer::TokenKind`)
 - #137921 (Subtree update of `rust-analyzer`)
 - #137922 (A few cleanups after the removal of `cfg(not(parallel))`)
 - #137939 (fix order on shl impl)
 - #137946 (Fix docker run-local docs)
 - #137955 (Always allow rustdoc-json tests to contain long lines)
 - #137958 (triagebot.toml: Don't label `test/rustdoc-json` as A-rustdoc-search)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-03-04 02:27:56 +00:00
lapla-cogito
d63d56aeb0
add macos-latest as a CI target 2025-03-03 22:31:36 +09:00
Matthias Krüger
c94576ed64 Rollup merge of #132388 - frank-king:feature/where-cfg, r=petrochenkov
Implement `#[cfg]` in `where` clauses

This PR implements #115590, which supports `#[cfg]` attributes in `where` clauses.

The biggest change is, that it adds `AttrsVec` and  `NodeId` to the `ast::WherePredicate` and `HirId` to the `hir::WherePredicate`.
2025-03-03 10:40:56 +01:00
Zalathar
ddc9f45b89 Remove some unnecessary aliases from rustc_data_structures::sync
With the removal of `cfg(parallel_compiler)`, these are always shared
references and `std::sync::OnceLock`.
2025-03-03 20:20:24 +11:00
yanglsh
68679f295f fix: manual_let_else missing binding mode 2025-03-03 13:02:44 +08:00
Alejandra González
a9c61ec1e1
needless_collect: avoid warning if non-iterator methods are used (#14147)
changelog: [`needless_collect`]: avoid warning if non-`Iterator` methods
are called on the result of `into_iter`

Fixes #13430
2025-03-02 22:40:07 +00:00
Alejandra González
aa2180f5fe
fix: map_entry suggest wrongly when key is not Copy (#14314)
Closes #13306
Closes #9925
Closes #9470
Closes #9305

Clippy gives wrong suggestions when the key is not `Copy`. As suggested
in #9925, in such cases Clippy will simply warn but no fix.

changelog: [`map_entry`]: fix wrong suggestions when key is not `Copy`
2025-03-02 20:55:17 +00:00
Samuel Tardieu
336d34481e Apply ptr_eq lint only if cmp_null is not applicable
The `cmp_null` lint is more specialized than `ptr_eq`. The former should
take precedence, unless the user allows it.
2025-03-02 16:21:12 +01:00
Samuel Tardieu
d7d0abd2ad Lint more cases of ptr::eq()
Also, do not strip conversions of a function pointer to a `*const`, as
no implicit conversion will take place.
2025-03-02 15:50:13 +01:00
Fridtjof Stoldt
62f34f2f58
fix: undocumented_unsafe_blocks FP on trait/impl items (#13888)
fixes #11709

Continuation of #12672. r? @Alexendoo if you don't mind?

changelog: [`undocumented_unsafe_blocks`] fix FP on trait/impl items
2025-03-01 15:53:45 +00:00
Frank King
cac9e0ab60 Implment #[cfg] and #[cfg_attr] in where clauses 2025-03-01 22:02:46 +08:00
llogiq
35746de197
comparison_chain: stylepedantic (#14219)
The `comparison_chain` lint might suggest code which seems less natural
to beginners.

[Discussion](https://rust-lang.zulipchat.com/#narrow/channel/257328-clippy/topic/demote.20some.20lints.20to.20.60pedantic.60)

changelog: [`comparison_chain`]: change lint category to `pedantic`
2025-03-01 13:41:44 +00:00
lapla-cogito
6537f93b8b
rename the MSRV alias MANUAL_DIV_CEIL to DIV_CEIL 2025-03-01 22:40:43 +09:00
yanglsh
d027ca95de Add regression test for #11709 2025-03-01 20:45:46 +08:00
yanglsh
3899488e53 fix undocumented_unsafe_blocks FP in long assignment 2025-03-01 20:35:48 +08:00
yanglsh
91d20cbb82 Use inner span in undocumented_unsafe_blocks 2025-03-01 20:35:18 +08:00
J-ZhengLi
d395646a60 fix [undocumented_unsafe_blocks] FP with trait/impl items 2025-03-01 20:33:24 +08:00
xFrednet
45e44878a7
doc_comment_double_space_linebreaks: Fix tests 2025-03-01 12:15:24 +01:00
xFrednet
7fe160a60d
Rename doc_comment_double_space_linebreak -> doc_comment_double_space_linebreaks 2025-03-01 12:05:09 +01:00
xFrednet
60191cfd5b
doc_comment_double_space_linebreak: Use multi spans and suggestions 2025-03-01 12:02:08 +01:00
Jacherr
2fd51b8d34
doc_comment_double_space_linebreaks: lint per line instead of by block
remove additional lint call

fix

fix lint defs
2025-03-01 12:01:52 +01:00
Jacher
f94f64f5e8
new lint: doc_comment_double_space_linebreak
fix typo

change replacement character in example, remove extraneous space from suggested change

add additional testcases; check doc comment not from expansion

do not lint on macros, add more testcases

fix wording, remove commented out code, add additonal testcase

uibless

fix doc comments, use optional snippets

Remove unneeded additional space
2025-03-01 12:01:01 +01:00
Fridtjof Stoldt
1419ac2982
Suggest using #[expect] to check lint positioning (#14327)
Using `#[allow]` will also apply to child HIR nodes, while `#[expect]`
will ensure that the proper HIR node has been used for positioning the
lint.

changelog: none
2025-03-01 10:48:26 +00:00
Samuel Tardieu
e15b9a09e8 Suggest using #[expect] to check lint positioning
Using `#[allow]` will also apply to child HIR nodes, while `#[expect]`
will ensure that the proper HIR node has been used for positioning the
lint.
2025-03-01 09:34:55 +01:00
llogiq
817853044f
Extend {implicit,inverted}_saturating_sub to expressions (#14310)
changelog: [`implicit_saturating_sub`, `inverted_saturating_sub`]:
extend lints from local variables to side-effect free expressions

Noticed when #14308 introduced an implicit `saturating_sub` operation
and didn't get tagged.
2025-03-01 05:51:35 +00:00