Skip to content

Rollup of 13 pull requests - #161772

Merged
rust-bors[bot] merged 60 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-USO96L6
Aug 25, 2026
Merged

Rollup of 13 pull requests#161772
rust-bors[bot] merged 60 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-USO96L6

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

Dnreikronos and others added 30 commits August 21, 2026 14:42
Generalize the recovery to match arguments positionally against the
generic parameters, skipping those that need no explicit argument:
elided early-bound lifetimes, synthetic `impl Trait` type parameters,
and trailing type parameters with defaults. Bail only when there are
more arguments than can be matched.

Omitting such a parameter leaves fewer arguments than parameters, so the
exact-count check made recovery feed `{type error}` for the anon const
while the real lowering later fed the true type, tripping a double-feed
ICE under the `-Zthreads=0` front-end race.
Each exercises the early `type_of` query under the `-Zthreads=0`
front-end race with an omittable generic parameter: a synthetic
`impl Trait` param, an elided early-bound lifetime, multiple explicit
args, and a defaulted trailing type parameter.
`needs_coroutine_by_move_body_def_id` asks for `type_of`, and for a body
owner nested inside a const argument's anon const that goes through
`typeck` of the anon const, which needs the anon const's own type. That
type is never computed, only fed while the enclosing body is
type-checked.

Asking for it in the same pass that type-checks the bodies lets the
parallel front end reach the nested body owner first, computing and
caching an error type for the anon const that then conflicts with the
type fed later on. Since nothing reports an error in that case, the
delayed bugs surface as an ICE.

Split it into a second pass over the body owners so every body has been
type-checked, and every const argument lowered, before any nested body
owner is asked for its type.
Recovering the type from the HIR path meant re-deriving what the generic
argument lowering already works out, and only covered the cases the
partial classifier recognized: free function paths resolved to
`DefKind::Fn`, with no late-bound lifetimes.

Anything else still cached an error type and tripped the double-feed
ICE, including associated functions, tuple struct constructors, inherent
type-relative paths, and const arguments in type annotations, which are
not path expressions at all and so cannot be classified this way.

With the by-move bodies generated after typeck the anon const's type is
always fed before anything asks for it, so drop the recovery along with
the tests that only exercised its argument counting. The shapes they
covered are folded into the main regression test.
A naive `f32::mul_add(a as f32, b as f32, c as f32) as f16` has insufficient precision
…when-reliable

run `f16` and `f128` tests natively when reliable
port all variadic functions to strict signature checking
These non-obvious things are worth documenting.
run _Unwind_RaiseException test on Windows
unify shim_sig and shim_sig_variadic macros
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler 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-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 Aug 25, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member Author

@bors r+ p=5

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple-1,aarch64-apple-2,x86_64-mingw-1,i686-msvc-1,i686-msvc-2

@rust-bors

rust-bors Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

📌 Commit fddaffe 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 Aug 25, 2026
@rust-bors

rust-bors Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

⌛ Trying commit fddaffe with merge 5536d4d

To cancel the try build, run the command @bors try cancel.

Workflow: https://github.com/rust-lang/rust/actions/runs/32869330558

rust-bors Bot pushed a commit that referenced this pull request Aug 25, 2026
Rollup of 13 pull requests


try-job: dist-various-1
try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple-1
try-job: aarch64-apple-2
try-job: x86_64-mingw-1
try-job: i686-msvc-1
try-job: i686-msvc-2
@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 Aug 25, 2026
@rust-bors

rust-bors Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 7m 38s
Pushing 787af2b to main...

@github-actions

Copy link
Copy Markdown
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 b751e7a (parent) -> 787af2b (this PR)

Test differences

Show 1140 test diffs

Stage 1

  • [ui] tests/ui/assumptions_on_binders/test-infra-fails-properly.rs: [missing] -> pass (J0)
  • [ui] tests/ui/assumptions_on_binders/test-infra-works.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/anon-const-type-of-defaulted-param-issue-158818.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/anon-const-type-of-issue-158818.rs: [missing] -> pass (J0)
  • [ui] tests/ui/dropck/reservation.rs: pass -> [missing] (J0)
  • [ui] tests/ui/feature-gates/feature-gate-test-binder-constraints.rs: [missing] -> pass (J0)
  • [ui] tests/ui/scalable-vectors/require-target-feature.rs: ignore (only executed when the architecture is aarch64) -> pass (J0)
  • [ui] tests/ui/traits/reservation-impl/coherence-conflict.rs#next: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/coherence-conflict.rs#old: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/no-use.rs#next: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/no-use.rs#old: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/non-lattice-ok.rs#next: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/non-lattice-ok.rs#old: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/ok.rs#next: pass -> [missing] (J0)
  • [ui] tests/ui/traits/reservation-impl/ok.rs#old: pass -> [missing] (J0)
  • [codegen] tests/codegen-llvm/issues/static-table-search-loop-44041.rs: [missing] -> pass (J2)
  • [ui (polonius)] tests/ui/assumptions_on_binders/test-infra-fails-properly.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/assumptions_on_binders/test-infra-works.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/const-generics/anon-const-type-of-defaulted-param-issue-158818.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/const-generics/anon-const-type-of-issue-158818.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/dropck/reservation.rs: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/feature-gates/feature-gate-test-binder-constraints.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/scalable-vectors/require-target-feature.rs: ignore (only executed when the architecture is aarch64) -> pass (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/coherence-conflict.rs#next: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/coherence-conflict.rs#old: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/no-use.rs#next: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/no-use.rs#old: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/non-lattice-ok.rs#next: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/non-lattice-ok.rs#old: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/ok.rs#next: pass -> [missing] (J3)
  • [ui (polonius)] tests/ui/traits/reservation-impl/ok.rs#old: pass -> [missing] (J3)

Stage 2

  • [ui] tests/ui/assumptions_on_binders/test-infra-fails-properly.rs: [missing] -> pass (J1)
  • [ui] tests/ui/assumptions_on_binders/test-infra-works.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/anon-const-type-of-defaulted-param-issue-158818.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/anon-const-type-of-issue-158818.rs: [missing] -> pass (J1)
  • [ui] tests/ui/dropck/reservation.rs: pass -> [missing] (J1)
  • [ui] tests/ui/feature-gates/feature-gate-test-binder-constraints.rs: [missing] -> pass (J1)
  • [ui] tests/ui/traits/reservation-impl/coherence-conflict.rs#next: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/coherence-conflict.rs#old: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/no-use.rs#next: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/no-use.rs#old: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/non-lattice-ok.rs#next: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/non-lattice-ok.rs#old: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/ok.rs#next: pass -> [missing] (J1)
  • [ui] tests/ui/traits/reservation-impl/ok.rs#old: pass -> [missing] (J1)
  • [codegen] tests/codegen-llvm/issues/static-table-search-loop-44041.rs: [missing] -> pass (J4)
  • [ui] tests/ui/scalable-vectors/require-target-feature.rs: ignore (only executed when the architecture is aarch64) -> ignore (backend gcc cannot build for target aarch64-unknown-linux-gnu) (J5)
  • [ui] tests/ui/scalable-vectors/require-target-feature.rs: ignore (only executed when the architecture is aarch64) -> pass (J6)

Additionally, 1092 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 787af2b8c80638c51a4fc8e44f84e6891f243ec7 --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. dist-various-2: -> 49m 58s (+inf%)
  2. i686-gnu-nopt-2: -> 2h 7m (+inf%)
  3. x86_64-gnu: -> 2h 33m (+inf%)
  4. x86_64-gnu-distcheck: -> 2h 23m (+inf%)
  5. dist-x86_64-msvc-alt: -> 1h 35m (+inf%)
  6. x86_64-msvc-2: -> 1h 54m (+inf%)
  7. i686-gnu-nopt-1: -> 2h 15m (+inf%)
  8. i686-gnu-2: -> 1h 47m (+inf%)
  9. dist-various-1: -> 48m 50s (+inf%)
  10. x86_64-gnu-llvm-22-1: -> 1h 24m (+inf%)
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.

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-rustdoc-json Area: Rustdoc JSON backend merged-by-bors This PR was explicitly merged by bors. PG-exploit-mitigations Project group: Exploit mitigations rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler 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-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.