Key changes include:
- Removal of the word "syntax" from the lint message. More accurately,
it could have been something like "syntax group" or "syntax
category", but avoiding it completely is easier.
- The primary lint message now reflects exactly which mismatch is
occurring, instead of trying to be general. A new `help` line is
general across the mismatch kinds.
- Suggestions have been reduced to be more minimal, no longer also
changing non-idiomatic but unrelated aspects.
- Suggestion text no longer mentions changes when those changes don't
occur in that specific suggestion.
(cherry picked from commit 5530744318)
As a temporary measure while a proper fix for
`tests/ui/sized-hierarchy/incomplete-inference-issue-143992.rs`
is implemented, make `MetaSized` obligations always hold. In effect,
temporarily reverting the `sized_hierarchy` feature. This is a small
change that can be backported.
(cherry picked from commit 8d64937dc2)
Bootstrap already had a manual doc filter for the `sysroot` crate, but
other library crates keep themselves out of the public docs by setting
`[lib] doc = false` in their manifest. This seems like a better solution
to hide `compiler-builtins` docs, and removes the `sysroot` hack too.
(cherry picked from commit 87e7539fcd)
`cargo fix` does not have a way of distinguishing a suggestion with
multiple spans which should all be applied from multiple suggestions
where only one should be applied (see issue 53934). `cargo fix` only
works with `MachineApplicable` suggestions, so downgrading the
applicability will stop `cargo` from suggesting the user run `cargo
fix`. rust-analyzer does work with `MaybeIncorrect`, so interactive
fixes are still available.
(cherry picked from commit 46e9d2f9fc)
In an interactive context, the subprocess inherited a real tty stdin,
which lead it it waiting for something to happen, even though nothing
happened. By explicitly passing null as stdin we make sure an empty file
is passed, which achieves the desired behavior.
(cherry picked from commit 3003050d47)
Several UI tests have a `normalize-stderr` for "you are using x.y.z"
rustc versions, and that regex is flexible enough for suffixes like
"-nightly" and "-dev", but not for "-beta.N". We can just add '.' to
that trailing pattern to include this.
(cherry picked from commit 8469966710)
Check rustdoc-json-types FORMAT_VERSION is correctly updated
Follow-up of https://github.com/rust-lang/rust/pull/142677.
``@nnethercote`` suggested that we should also ensure that the `FORMAT_VERSION` was only increased by 1 and we should check for it, this PR does it.
cc ``@aDotInTheVoid``
r? ghost
centralize `-Zmin-function-alignment` logic
tracking issue: https://github.com/rust-lang/rust/issues/82232
discussed in: https://github.com/rust-lang/rust/pull/142824#discussion_r2160056244
Apply the `-Zmin-function-alignment` value to the alignment field of the function attributes when those are created, so that individual backends don't need to consider it.
The one exception right now is cranelift, because it can't yet set the alignment for individual functions, but it can (and does) set the global minimum function alignment.
cc ``@RalfJung`` I think this is an improvement regardless, is there anything else that should be done for miri?
Document subdirectories of UI tests with README files
Part of rust-lang/rust#133895 and the [2025 Google Summer of Code](https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/) associated project.
When adding a new UI test, one is faced with hundreds of subdirectories in `tests/ui` reflecting various categories. Knowing where to put the new test is not trivial, as many of the categories have slightly misleading names. For example, `moves` does not only refer to the `move` keyword but to functions taking ownership in general, whereas `allocator` does not refer to allocation in general but rather to the very specific `allocator_api` and `global_allocator` features.
Many contributors will therefore place their test at the top level of ̀`tests/ui` where it will be mixed with hundreds of unrelated tests.
This PR is a tentative move towards more clearly defined tag/categories, with a SUMMARY.md file documenting the true purpose of each subdirectory, placed inside `tests/ui`.
r? ``@jieyouxu``
Update cargo
7 commits in 2251525ae503fa196f6d7f9ce6d32eccb2d5f044..84709f085062cbf3c51fa507527c1b2334015178
2025-06-16 22:01:27 +0000 to 2025-06-22 23:58:39 +0000
- Bump cargo-util-schemas version (rust-lang/cargo#15696)
- test(msrv): use a far future "newer" version (rust-lang/cargo#15693)
- Plumb rustc `-Zhint-mostly-unused` flag through as a profile option (rust-lang/cargo#15643)
- Disable lldb test, which seems to be broken due to issues with lldb (rust-lang/cargo#15687)
- docs(contrib): change clap URL to docs.rs/clap (rust-lang/cargo#15682)
- feat: Introduce perma unstable `--compile-time-deps` option for `cargo build` (rust-lang/cargo#15674)
- fix: Failing tests on rustc nightly (rust-lang/cargo#15679)
Let String pass #[track_caller] to its Vec calls
I've added `#[track_caller]` to `String` methods that delegate to `Vec` methods that already have `#[track_caller]`.
I've also added `#[track_caller]` to methods that have `assert!` or `panic!` due to invalid inputs.
Skip no-op drop glue
Since rust-lang/rust#122662 this no longer gets used in vtables, so we're safe to fully
drop generating functions from vtables. Those are eventually cleaned up
by LLVM, but it's wasteful to produce them in the first place.
This doesn't appear to be a significant win (and shows some slight regressions) but
seems like the right thing to do. At minimum it reduces noise in the LLVM IR we generate,
which seems like a good thing.
Rollup of 10 pull requests
Successful merges:
- rust-lang/rust#142458 (Merge unboxed trait object error suggestion into regular dyn incompat error)
- rust-lang/rust#142593 (Add a warning to LateContext::get_def_path)
- rust-lang/rust#142594 (Add DesugaringKind::FormatLiteral)
- rust-lang/rust#142740 (Clean-up `FnCtxt::is_destruct_assignment_desugaring`)
- rust-lang/rust#142780 (Port `#[must_use]` to new attribute parsing infrastructure)
- rust-lang/rust#142798 (Don't fail to parse a struct if a semicolon is used to separate fields)
- rust-lang/rust#142856 (Add a few inline directives in rustc_serialize.)
- rust-lang/rust#142868 (remove few allow(dead_code))
- rust-lang/rust#142874 (cranelift: fix target feature name typo: "fxsr")
- rust-lang/rust#142877 (Document why tidy checks if `eslint` is installed via `npm`)
r? `@ghost`
`@rustbot` modify labels: rollup
Add a few inline directives in rustc_serialize.
I see `debug_strict_add` and `debug_strict_sub` appearing in callgrind output. This bothers me. This PR should make them disappear.