Commit graph

298901 commits

Author SHA1 Message Date
llogiq
17f2a87c0c
Add internal lint derive_deserialize_allowing_unknown (#14360)
Adds an internal lint to check for `#[derive(serde::Deserialize)]`
without
[`#[serde(deny_unknown_fields)]`](https://serde.rs/container-attrs.html#deny_unknown_fields).

Today, if you run Clippy with the following clippy.toml, Clippy will
produce a warning, but there will be no accompanying note:
```toml
# In the following configuration, "recommendation" should be "reason" or "replacement".
disallowed-macros = [
    { path = "std::panic", recommendation = "return a `std::result::Result::Error` instead" },
]
```
```sh
$ cargo clippy
    Checking a v0.1.0 (/home/smoelius/tmp/a)
warning: use of a disallowed macro `std::panic`
 --> src/lib.rs:2:5
  |
2 |     panic!();
  |     ^^^^^^^^
  |
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_macros
  = note: `#[warn(clippy::disallowed_macros)]` on by default
```
The underlying problem is: the enum that derives `serde::Deserialize`
([`DisallowedPathEnum`](81643e297c/clippy_config/src/types.rs (L47)))
does not have the attribute `#[serde(deny_unknown_fields)]`.

This lint identifies such problems by checking trait `impl`s. An
alternative I considered was to walk `clippy_config::conf::Conf`
directly. However, that would not catch the `DisallowedPathEnum` case
because it [is not used in `Conf`
directly](81643e297c/clippy_config/src/types.rs (L31)).

Just to be clear, no one asked for this. So I hope the maintainers do
not mind.

changelog: none
2025-05-13 15:36:57 +00:00
Samuel Moelius
9f4ecea242 Add internal lint derive_deserialize_allowing_unknown 2025-05-13 10:48:41 -04:00
est31
5c2677d017 Add match guard chains test, based on mir_let_chains_drop_order.rs 2025-05-13 16:22:52 +02:00
est31
dcd2736fcc Add match guard chains to drop-order-comparisons.rs 2025-05-13 16:22:48 +02:00
bors
414482f6a0 Auto merge of #140921 - Berrysoft:update-rustc-lock, r=jieyouxu
Update `ctrlc`, `libloading` and `nix` for rustc

The main purpose is to update `nix` to 0.30.1. It adds support for cygwin.
2025-05-13 13:06:57 +00:00
Tobias Decking
d16c82dba1 Fix i256::MAX 2025-05-13 15:01:51 +02:00
bors
4eca99a18e Auto merge of #140887 - pietroalbini:pa-bootstrap-update, r=compiler-errors
Stage0 bootstrap update

This PR [follows the release process](https://forge.rust-lang.org/release/process.html#master-bootstrap-update-tuesday) to update the stage0 compiler.

The only thing of note is 58651d1b31, which was flagged by clippy as a correctness fix. I think allowing that lint in our case makes sense, but it's worth to have a second pair of eyes on it.

r? `@Mark-Simulacrum`
2025-05-13 09:54:28 +00:00
Michael Goulet
8ce7783c7c
Format and skip formatting for pin 2025-05-13 11:30:39 +02:00
Pietro Albini
ce6e29679c
bump compiler_builtins 2025-05-13 11:30:36 +02:00
Michael Goulet
a508011b1f Expect deep norm to fail if query norm failed 2025-05-13 09:18:17 +00:00
Oli Scherer
34976ac9fe Invoke a query only when it doesn't return immediately anyway 2025-05-13 08:55:32 +00:00
Oli Scherer
c86e33b771 Run rustc_attrs dumps after typeck 2025-05-13 08:46:10 +00:00
Oli Scherer
bd587005fb Some require_lang_item -> is_lang_item replacements 2025-05-13 08:46:10 +00:00
David Wood
a5e1dba0cd
trait_sel: deep reject match_normalize_trait_ref
Spotted during an in-person review of unrelated changes,
`match_normalize_trait_ref` could be using `DeepRejectCtxt` to exit early
as an optimisation for prejection candidates, like is done in param
candidates.
2025-05-13 07:33:51 +00:00
bors
f6b5da71ea Auto merge of #140951 - compiler-errors:super-fmt, r=ytmimi
Do not remove `super` keyword from `super let`

This is affecting a macro in the standard library:

bc7512ee63/library/core/src/pin.rs (L1945)

I added an exception in 6f6a9a585891d0a2d1114a7a621f35f28f39c0d9, but I'd like to remove it eventually, so opening this in-tree to not block this on the next rustfmt sync.

r? `@calebcartwright` or `@ytmimi`
2025-05-13 06:43:56 +00:00
llogiq
7bac114c86
Add new lint: cloned_ref_to_slice_refs (#14284)
Added lint for catching `&[foo.clone()]` where foo is a reference and
suggests `std::slice::from_ref(foo)`.

changelog: new lint: [`cloned_ref_to_slice_refs`]
2025-05-13 05:32:33 +00:00
Julian Knodt
ab1c49a7fa Add #[must_use] to Array::map
The output of Array::map is intended to be an array of the same size, and does not modify the
original in place nor is it intended for side-effects. Thus, under normal circumstances it should be consumed.

See [discussion](https://internals.rust-lang.org/t/array-map-annotate-with-must-use/22813/26).

Attaching to tracking issue #75243
2025-05-13 12:34:53 +09:00
bors
32d23857f1 Auto merge of #140935 - omahs:patch-5, r=jieyouxu
Fix typos

Fix typos
2025-05-13 03:33:22 +00:00
asdfish
40e1b0ed00 add lint cloned_ref_to_slice_refs
remove merge

removed false positive and improved tests

clarify known problems for `cloned_ref_to_slice_refs`
2025-05-12 21:12:58 -04:00
bors
3ae0b2e2ed Auto merge of #140927 - mejrs:test5, r=jieyouxu
chore: move more ui tests

r? `@jieyouxu`
2025-05-13 00:03:33 +00:00
Tshepang Mbambo
b255ae2cdb remove dangling references 2025-05-12 23:59:55 +02:00
Barun Parruck
73a19a0c67 Make lint span smaller for needless return 2025-05-12 22:59:07 +01:00
Jason Newcomb
0636121964 clippy_dev: Remove print option from update_lints 2025-05-12 17:07:53 -04:00
Jason Newcomb
a9beb8b68d clippy_dev: Refactor token parsing to avoid macros. 2025-05-12 17:07:53 -04:00
Jason Newcomb
97abf33fa0 clippy_dev: Split gathering lint decls from parsing deprecated lints. 2025-05-12 17:07:53 -04:00
Jason Newcomb
2c85cb0371 clippy_dev: Only build AhoCorasick searcher once for multiple files. 2025-05-12 17:07:52 -04:00
Jason Newcomb
98cb92f323 clippy_dev: Reuse buffers when updating files and don't write unchanged files in clippy_dev 2025-05-12 17:07:52 -04:00
Jason Newcomb
3fe5fb2967 clippy_dev: Split rename and deprecate out of update_lints 2025-05-12 17:07:52 -04:00
Jason Newcomb
2f39264d00 clippy_dev: Set the current directory to clippy's root path. 2025-05-12 17:07:52 -04:00
Michael Goulet
df1da673f7 Flush errors before deep normalize in dropck_outlives 2025-05-12 21:04:38 +00:00
bors
8405332bdf Auto merge of #140909 - fmease:modern-notif-backport-rustdoc, r=apiraino
Use new form for T-rustdoc's {beta,stable}-{nominated,accepted} notify-Zulip triggers

Applies [#t-rustdoc > PSA: New actions on backport notifs @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc/topic/PSA.3A.20New.20actions.20on.20backport.20notifs/near/514823133).
Complements #140397.

r? `@apiraino` or T-triagebot
2025-05-12 20:50:11 +00:00
WANG Rui
63235a6ba5 Partially stabilize LoongArch target features 2025-05-12 19:47:49 +00:00
Philipp Krones
bfc6ad0340
Do not use clippy_utils from UI tests (#14788)
changelog: none

r? @flip1995
2025-05-12 19:32:40 +00:00
Philipp Krones
54aa120f18
Update "Changelog update walkthrough" section (#14785)
Update "Changelog update walkthrough" section based on
rust-lang/rust-clippy#14748 discussion

changelog: none
2025-05-12 19:29:36 +00:00
bors
1a7f290a9a Auto merge of #140914 - Zalathar:asm-bindings, r=compiler-errors
cg_llvm: Clean up some inline assembly bindings

This PR combines a few loosely-related cleanups to LLVM bindings related to inline assembly. These include:
- Replacing `LLVMRustInlineAsm` with LLVM-C's `LLVMGetInlineAsm`
- Adjusting FFI declarations to avoid the need for explicit `as_c_char_ptr` conversions
- Flattening control flow in `inline_asm_call`

There should be no functional changes.
2025-05-12 17:39:21 +00:00
omahs
1caaa88700 Fix typos 2025-05-12 17:20:49 +00:00
Alexey Semenyuk
2215282fa4 Update Changelog update walkthrough docs section 2025-05-12 22:15:53 +05:00
Jieyou Xu
82fbbc0882 compiletest: fix "blessing" message
It was showing compare mode instead of test name.
2025-05-12 16:46:52 +00:00
Simon Sapin
9a0c85655c Specify that split_ascii_whitespace uses the same definition as is_ascii_whitespace 2025-05-12 18:43:00 +02:00
llogiq
83248e57e9
Fix messages for type_repetition_in_bounds (#14752)
changelog: [`type_repetition_in_bounds`]: include all generic bounds in
suggestion, clearer message which now includes the repeated type name

Fixes rust-lang/rust-clippy#14744
2025-05-12 16:37:11 +00:00
clubby789
5eb47eeb85 Add failing tests for some Option optimizations 2025-05-12 17:33:58 +01:00
Samuel Tardieu
c6a23f8fbd
Include all bounds in bounds consolidation
Also, include the type name in the lint message, and simplify the span
computation.
2025-05-12 18:32:17 +02:00
Samuel Tardieu
01e08a4c5b
Do not use clippy_utils from UI tests 2025-05-12 18:28:59 +02:00
llogiq
459364b971
return_and_then: only lint returning expressions (#14783)
If an expression is not going to return from the current function of
closure, it should not get linted.

This also allows `return` expression to be linted, in addition to the
final expression. Those require blockification and proper indentation.

changelog: [`return_and_then`]: only lint returning expressions

Fixes rust-lang/rust-clippy#14781
2025-05-12 16:01:55 +00:00
llogiq
62ba9969a4
Fix clippy::version of elidable_lifetime_names to 1.87 (#14654)
relates to rust-lang/rust-clippy#14653

changelog: [`elidable_lifetime_names`]: Fix clippy version that this
lint was introduced in.

It might be good to have some automation to check that the version is
correct.
IIUC the version should be the current nightly version at the time a PR
is merged.
If a release happens while a PR is open, the version needs to be bumped
- this is easy to forget.
2025-05-12 15:53:05 +00:00
Michael Goulet
26316b86bc Do not remove super keyword from super-let 2025-05-12 15:30:48 +00:00
llogiq
b363499457
Add new confusing_method_to_numeric_cast lint (#13979)
Fixes https://github.com/rust-lang/rust-clippy/issues/13973.

I don't think we can make `fn_to_numeric_cast_any` to be emitted in some
special cases. Its category cannot be changed at runtime.

I think in this case, the best might be a specialized new lint so we can
target exactly what we want.

----

changelog: Add new `confusing_method_to_numeric_cast` lint
2025-05-12 15:27:33 +00:00
Antoni Boucher
57011501d5 Fix for libgccjit 12 2025-05-12 11:22:13 -04:00
Antoni Boucher
bef68d04d9 Update to nightly-2025-05-12 2025-05-12 11:05:47 -04:00
Antoni Boucher
c12d12b1bb Fix for renamed/removed UI tests 2025-05-12 11:05:09 -04:00