Skip to content

Rollup of 12 pull requests#153217

Merged
rust-bors[bot] merged 60 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-iXVG70B
Feb 28, 2026
Merged

Rollup of 12 pull requests#153217
rust-bors[bot] merged 60 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-iXVG70B

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

r? @ghost

Create a similar rollup

JohnTitor and others added 30 commits February 17, 2026 20:32
- Remove some redundant `.clone_for_update()` and `.indent(IndentLevel::single())`

Example
---
```rust
fn main() {
    if true {
        $0if true
            && false
        {
            foo()
        }
    }
}
```

**Before this PR**

```rust
fn main() {
    if true {
        match true
                    && false {
            true => foo(),
            _ => (),
        }
    }
}
```

**After this PR**

```rust
fn main() {
    if true {
        match true
            && false {
            true => foo(),
            _ => (),
        }
    }
}
```
the `check_ptr_ptr_cast` function had an early return when the source and
destination dyn trait objects shared the same principal trait def id:

    if src_principal == dst_principal {
        return Ok(());
    }

this bypassed all three remaining checks that the code comment explicitly
listed as required: generic argument equality, projection equality, and
the auto-trait superset check. as a result, casts like
`*mut dyn Trait as *mut (dyn Trait + Send)` were silently accepted
instead of emitting E0804.

the fix removes the early return. `CastError::PtrPtrAddingAutoTraits` and
its diagnostic were already implemented — they just couldn't be reached.
the supertrait case (`trait Trait: Send`) continues to work correctly
because the auto-trait check already accounts for implied auto traits via
supertrait elaboration.
Currently the rustfmt slow test fails if you don't have a nightly
toolchain installed. We install a nightly toolchain on CI, but it's a
little confusing that tests can fail on a fresh checkout on a new
laptop.

Instead, skip this test if there's no nightly toolchain.
internal: Skip rustfmt test if nightly toolchain is missing
Example
---
```rust
enum Enum { TupleV(u32), RecordV { field: u32 }, UnitV }
use Enum::*;
fn func() {
    if let $0 = unknown {}
}
```

**Before this PR**

```text
...
ev RecordV
ev TupleV
ev UnitV
bn RecordV {…} RecordV { field$1 }$0
bn TupleV(…)            TupleV($1)$0
bn UnitV                     UnitV$0
kw mut
kw ref
```

**After this PR**

```text
...
bn RecordV {…} RecordV { field$1 }$0
bn TupleV(…)            TupleV($1)$0
bn UnitV                     UnitV$0
kw mut
kw ref
```
…on-panic

fix: Don't panic on invalid LSP notifications
…auto-trait-not-detected

fix: Detect E0804 when casting raw ptr-to-dyn adds auto traits
fix: Fix scrutinee expr indent for replace_if_let_with_match
…nt-pat

fix: no complete enum variant qualifier in pat
fix: Use -Zlockfile-path on every 1.95 nightly
@rustbot rustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. T-rustfmt Relevant to the rustfmt team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Feb 28, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 28, 2026

📌 Commit 3ff038e has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 28, 2026
@rust-bors

This comment has been minimized.

@rust-bors rust-bors bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 28, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 28, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 6m 17s
Pushing ba15679 to main...

@rust-bors rust-bors bot merged commit ba15679 into rust-lang:main Feb 28, 2026
12 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Feb 28, 2026
@github-actions
Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing 1d113d2 (parent) -> ba15679 (this PR)

Test differences

Show 504 test diffs

Stage 0

  • tests::pattern::enum_unqualified: [missing] -> pass (J0)

Stage 1

  • [crashes] tests/crashes/120811.rs: pass -> [missing] (J0)
  • [crashes] tests/crashes/120911.rs: pass -> [missing] (J0)
  • [rustdoc-js] tests/rustdoc-js/reexport-alias.rs: [missing] -> pass (J0)
  • [rustdoc-js] tests/rustdoc-js/reexport-search_unbox.rs: [missing] -> pass (J0)
  • [ui] tests/ui/closures/closure-capture-hrtb-gat-no-ice-120811.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-field-projections.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-field-representing-type-raw.rs: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/incoherent-impl.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/incoherent-impl.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/invalid.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/invalid.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/non-struct.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/non-struct.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/nonexistent.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/nonexistent.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/not-field-if-packed.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/not-field-if-packed.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/offset.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/offset.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/privacy.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/privacy.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/projections.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/projections.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/sized.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/sized.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/traits.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/traits.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/weird-impls.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/field_representing_types/weird-impls.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/alias-liveness/rpit-hide-lifetime-for-swap.rs#polonius_alpha: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/hidden-lifetimes.rs#polonius_alpha: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/ice-on-shadowing-std-with-attr.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/ice-on-shadowing-std-with-macro.rs: [missing] -> pass (J0)
  • [ui] tests/ui/suggestions/trait-impl-param-mismatched-cross-crate.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/normalize-capture-place-151579.rs: [missing] -> pass (J0)
  • tests::pattern::enum_unqualified: [missing] -> pass (J3)

Stage 2

  • [crashes] tests/crashes/120811.rs: pass -> [missing] (J1)
  • [crashes] tests/crashes/120911.rs: pass -> [missing] (J1)
  • [ui] tests/ui/closures/closure-capture-hrtb-gat-no-ice-120811.rs: [missing] -> pass (J2)
  • [ui] tests/ui/feature-gates/feature-gate-field-projections.rs: [missing] -> pass (J2)
  • [ui] tests/ui/feature-gates/feature-gate-field-representing-type-raw.rs: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/incoherent-impl.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/incoherent-impl.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/invalid.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/invalid.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/non-struct.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/non-struct.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/nonexistent.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/nonexistent.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/not-field-if-packed.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/not-field-if-packed.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/offset.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/offset.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/privacy.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/privacy.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/projections.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/projections.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/sized.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/sized.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/traits.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/traits.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/weird-impls.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/field_representing_types/weird-impls.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/impl-trait/alias-liveness/rpit-hide-lifetime-for-swap.rs#polonius_alpha: [missing] -> pass (J2)
  • [ui] tests/ui/impl-trait/hidden-lifetimes.rs#polonius_alpha: [missing] -> pass (J2)
  • [ui] tests/ui/resolve/ice-on-shadowing-std-with-attr.rs: [missing] -> pass (J2)
  • [ui] tests/ui/resolve/ice-on-shadowing-std-with-macro.rs: [missing] -> pass (J2)
  • [ui] tests/ui/suggestions/trait-impl-param-mismatched-cross-crate.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/normalize-capture-place-151579.rs: [missing] -> pass (J2)
  • [rustdoc-js] tests/rustdoc-js/reexport-alias.rs: [missing] -> pass (J4)
  • [rustdoc-js] tests/rustdoc-js/reexport-search_unbox.rs: [missing] -> pass (J4)

Additionally, 432 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard ba1567989ee7774a1fb53aa680a8e4e8daa0f519 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. aarch64-apple: 3h 38m -> 2h 51m (-21.4%)
  2. dist-apple-various: 1h 42m -> 2h 4m (+21.0%)
  3. tidy: 2m 26s -> 2m 56s (+20.4%)
  4. dist-aarch64-llvm-mingw: 1h 49m -> 1h 30m (-17.8%)
  5. x86_64-gnu: 2h 8m -> 2h 26m (+14.5%)
  6. dist-armv7-linux: 1h 25m -> 1h 35m (+11.9%)
  7. dist-x86_64-apple: 2h 22m -> 2h 9m (-9.5%)
  8. x86_64-gnu-miri: 1h 28m -> 1h 20m (-9.2%)
  9. aarch64-gnu-llvm-20-2: 48m 50s -> 53m 2s (+8.6%)
  10. i686-gnu-1: 2h 8m -> 2h 19m (+8.4%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#149027 Improve cross-crate trait impl param mismatch suggestions a1fa3d81e75eb9fe6027b0da903a09e41851a65a (link)
#152165 Normalize capture place tys to prevent ICE 25d2366fd2c142381f80cb5115eef7ab15e13149 (link)
#152615 refactor 'valid for read/write' definition: exclude null 8a21949d78556cd8370ef79fad6825d78510c5e4 (link)
#152730 add field representing types 4d5b1a3d2aa70949dbd1c17bb6619687c6e8f5d5 (link)
#153109 Fix LegacyKeyValueFormat report from docker build: aarch64-… 93cddab8d341f939a728899cbac6e76e17e66185 (link)
#153136 Correctly handle #[doc(alias = "...")] attribute on inlin… bc7aa1909b8ec0eb02ac64f3d5128e8cf75ae773 (link)
#153172 Fix comment about placeholders dca26ac94f6eddd593ff9b86b17a0919421b5f2f (link)
#153187 Fix ICE when macro-expanded extern crate shadows std 4201dee709031843a7f894b341e97289a8f9b657 (link)
#153190 Don't allow subdiagnostic to use variables from their parent 607a948ee17f21e2ee799094752d5cee50603aec (link)
#153200 Remove redundant clone a94694f8b63ec93e63399785ca8cbf6fd7b6c7e1 (link)
#153211 rust-analyzer subtree update 044c7e98e733c96e3a08052a7dc204545f87a923 (link)
#153216 mark two polonius tests as known-bug fb3972478f08f38474d0abcd101265eae59790d5 (link)

previous master: 1d113d2f30

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (ba15679): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 1.0%, secondary -1.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.8% [2.8%, 2.8%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.8% [-0.8%, -0.8%] 1
Improvements ✅
(secondary)
-1.1% [-1.1%, -1.1%] 1
All ❌✅ (primary) 1.0% [-0.8%, 2.8%] 2

Cycles

Results (primary -1.2%, secondary 3.4%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
3.4% [3.4%, 3.4%] 1
Improvements ✅
(primary)
-1.2% [-1.2%, -1.2%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -1.2% [-1.2%, -1.2%] 1

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 508.307s -> 479.975s (-5.57%)
Artifact size: 397.57 MiB -> 395.63 MiB (-0.49%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CI Area: Our Github Actions CI A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-rustdoc-js Area: Rustdoc's JS front-end A-rustdoc-json Area: Rustdoc JSON backend A-rustdoc-search Area: Rustdoc's search feature A-testsuite Area: The testsuite used to check the correctness of rustc A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. T-rustfmt Relevant to the rustfmt team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.