Skip to content

Rollup of 23 pull requests#157726

Closed
jhpratt wants to merge 59 commits into
rust-lang:mainfrom
jhpratt:rollup-UIfbKIF
Closed

Rollup of 23 pull requests#157726
jhpratt wants to merge 59 commits into
rust-lang:mainfrom
jhpratt:rollup-UIfbKIF

Conversation

@jhpratt

@jhpratt jhpratt commented Jun 10, 2026

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

s7tya and others added 30 commits May 29, 2026 04:37
WF-checking walks through higher-ranked binders without instantiating
them, so a `dyn Trait` nested inside a `for<'a>` bound reaches the
`ty::Dynamic` arm of `WfPredicates::visit_ty` while still carrying
escaping bound vars. Feeding that type into
`ExistentialTraitRef::with_self_ty` violated its no-escaping-self
precondition and tripped the assertion that guards it.

The trait ref built there is only used to read off `ConstArgHasType`
clauses, which constrain the trait's own const arguments and never
mention the `Self` type. Substitute a fresh placeholder self type when
the real one escapes: the assertion holds and the const-argument check
is still performed. Re-enable the `with_self_ty` debug assertion now
that its precondition is upheld.
One test covers the original ICE (a `dyn Trait` nested in a `for<'a>`
bound, distilled from itertools). The other locks in that a const
argument on such a nested `dyn` is still type-checked, so the
placeholder-self-type fix cannot silently regress into dropping the
`ConstArgHasType` check.
The in-memory dep graph kept for `-Zquery-dep-graph` is built by
`GraphEncoder::record`, which pushed each node using `try_lock` and
silently dropped the node when the lock was contended. Single-threaded
the only contention is a query forced re-entrantly from within
`with_retained_dep_graph`, so dropping was harmless. Under the parallel
frontend several encoder threads record nodes at the same time, so a
contended `try_lock` dropped nodes and edges at random, leaving the
retained graph nondeterministic and making the dep-graph ui tests, which
assert on its contents, fail intermittently.

Remove that reentrancy in `check_paths`: read the graph into owned
results while the lock is held, then emit the diagnostics afterwards.
The only query forced inside the old closure was `def_path_str` (for the
error messages), which can create dep nodes and re-enter the encoder;
doing the emission after the lock is released means `record` never
re-enters while the lock is held. `record` can then block on the lock
unconditionally instead of using `try_lock`, so concurrent encoders
never drop a node or edge.

This only affects compilation with `-Zquery-dep-graph`; with the flag
off the retained graph is absent and nothing changes.
These tests assert on the contents of the retained dep graph, which is now
built deterministically under the parallel frontend, so they no longer need
to be ignored there. Replace the ignore-parallel-frontend directives with
blank lines rather than deleting them, so the following line numbers stay the
same and the expected output is unchanged.
WF-checking can reach ExistentialTraitRef::with_self_ty with a dyn
principal that still carries escaping bound vars, e.g. a dyn nested in
a for<'a> bound, which tripped the debug assertion forbidding escaping
self types and ICEd when compiling itertools.

Building such a trait ref is fine: escaping bound vars are caught where
it is actually used. Remove the assertion rather than working around it,
which lets the WF visitor pass the type through unchanged and drops the
placeholder-self-type detour.
@rustbot rustbot added T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) 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. labels Jun 10, 2026
@jhpratt

jhpratt commented Jun 10, 2026

Copy link
Copy Markdown
Member Author

@bors r+ rollup=never p=5

@rust-bors

rust-bors Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 8367944 has been approved by jhpratt

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 Jun 10, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Jun 10, 2026
Rollup of 23 pull requests

Successful merges:

 - #157280 (traits: Allow escaping self types in ExistentialTraitRef::with_self_ty)
 - #157282 (Fix post-monomorphization error note race in the parallel frontend)
 - #157352 (Make the retained dep graph deterministic under the parallel frontend)
 - #157601 (Emit error for unused target expression in glob and list delegations)
 - #157611 (Update `browser-ui-test` version to `0.24.0`)
 - #157620 (Add a strategy FnMut to inject behavior into the flush cycle)
 - #157645 (Windows TLS - Only register the `atexit` hook when `cleanup` can be unloaded)
 - #157647 (Start using comptime for reflection intrinsics and their wrapper functions)
 - #157719 (resolve: Partially revert "Remove a special case for dummy imports")
 - #156497 (fix-155516: Don't suggest wrong unwrap expect)
 - #156583 (Support defaults for static EIIs)
 - #157013 (Ensure inferred let pattern types are well-formed)
 - #157230 (borrowck: avoid ICE describing fields on generic params)
 - #157288 (platform support: add SNaN erratum to MIPS targets)
 - #157350 (compiletest: ignore SVG `y` offset in by-lines comparison)
 - #157355 (Add `or_try_*` variants for `HashMap` and `BTreeMap` Entry APIs)
 - #157384 (Add `#[rustc_dump_generics]` attribute)
 - #157577 (Fix parser error recovery treating 'dyn' as a strict keyword in Rust 2015 when used in `dyn + dyn`)
 - #157670 (Rename `errors.rs` file to `diagnostics.rs` (4/N))
 - #157691 (Move symbol hiding code to a new file)
 - #157697 (Add more tests that exercise the well-formedness checking of lazy type aliases)
 - #157700 (Rename `errors.rs` file to `diagnostics.rs` (5/N))
 - #157703 (Fix doc link to Instant sub in saturating caveat)

Failed merges:

 - #157699 (Arg splat experiment - hir FnDecl impl)
@rust-bors rust-bors Bot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 10, 2026
@rust-bors

rust-bors Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

💔 Test for 08d9006 failed: CI. Failed job:

@jhpratt

jhpratt commented Jun 10, 2026

Copy link
Copy Markdown
Member Author

@bors retry

@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 Jun 10, 2026
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

A job failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Jun 11, 2026
Rollup of 23 pull requests

Successful merges:

 - #157280 (traits: Allow escaping self types in ExistentialTraitRef::with_self_ty)
 - #157282 (Fix post-monomorphization error note race in the parallel frontend)
 - #157352 (Make the retained dep graph deterministic under the parallel frontend)
 - #157601 (Emit error for unused target expression in glob and list delegations)
 - #157611 (Update `browser-ui-test` version to `0.24.0`)
 - #157620 (Add a strategy FnMut to inject behavior into the flush cycle)
 - #157645 (Windows TLS - Only register the `atexit` hook when `cleanup` can be unloaded)
 - #157647 (Start using comptime for reflection intrinsics and their wrapper functions)
 - #157719 (resolve: Partially revert "Remove a special case for dummy imports")
 - #156497 (fix-155516: Don't suggest wrong unwrap expect)
 - #156583 (Support defaults for static EIIs)
 - #157013 (Ensure inferred let pattern types are well-formed)
 - #157230 (borrowck: avoid ICE describing fields on generic params)
 - #157288 (platform support: add SNaN erratum to MIPS targets)
 - #157350 (compiletest: ignore SVG `y` offset in by-lines comparison)
 - #157355 (Add `or_try_*` variants for `HashMap` and `BTreeMap` Entry APIs)
 - #157384 (Add `#[rustc_dump_generics]` attribute)
 - #157577 (Fix parser error recovery treating 'dyn' as a strict keyword in Rust 2015 when used in `dyn + dyn`)
 - #157670 (Rename `errors.rs` file to `diagnostics.rs` (4/N))
 - #157691 (Move symbol hiding code to a new file)
 - #157697 (Add more tests that exercise the well-formedness checking of lazy type aliases)
 - #157700 (Rename `errors.rs` file to `diagnostics.rs` (5/N))
 - #157703 (Fix doc link to Instant sub in saturating caveat)

Failed merges:

 - #157699 (Arg splat experiment - hir FnDecl impl)
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job i686-gnu-nopt-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
572           has_self: false,
573           has_late_bound_regions: None,

Note: some mismatched output was normalized before being compared
-               DefId(0:8 ~ dump_generics[c1f6]::NiceOfTheFoundation::U): 5,
-               DefId(0:7 ~ dump_generics[c1f6]::NiceOfTheFoundation::T): 4,
-               DefId(0:6 ~ dump_generics[c1f6]::NiceOfTheFoundation::N): 3,
-               DefId(0:5 ~ dump_generics[c1f6]::NiceOfTheFoundation::'_b): 2,
-               DefId(0:4 ~ dump_generics[c1f6]::NiceOfTheFoundation::'_a): 1,
-               DefId(0:3 ~ dump_generics[c1f6]::NiceOfTheFoundation): 0,
-               DefId(0:17 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::'a): 1,
-               DefId(0:16 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode): 0,
-               DefId(0:21 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::U): 5,
-               DefId(0:20 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::T): 4,
-               DefId(0:19 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::N): 3,
-               DefId(0:18 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::'b): 2,
-               DefId(0:34 ~ dump_generics[c1f6]::HaveTakenOver::N): 2,
-               DefId(0:33 ~ dump_generics[c1f6]::HaveTakenOver::'b): 1,
-               DefId(0:32 ~ dump_generics[c1f6]::HaveTakenOver::'a): 0,
-               DefId(0:36 ~ dump_generics[c1f6]::HaveTakenOver::U): 4,
-               DefId(0:35 ~ dump_generics[c1f6]::HaveTakenOver::T): 3,
-               DefId(0:59 ~ dump_generics[c1f6]::i_dare_you::N): 1,
-               DefId(0:57 ~ dump_generics[c1f6]::i_dare_you::'a): 0,
-               DefId(0:61 ~ dump_generics[c1f6]::i_dare_you::U): 3,
-               DefId(0:60 ~ dump_generics[c1f6]::i_dare_you::T): 2,
+               DefId(..): 5,
+               DefId(..): 3,
+               DefId(..): 0,
+               DefId(..): 1,
+               DefId(..): 5,
+               DefId(..): 2,
+               DefId(..): 1,
+               DefId(..): 4,
+               DefId(..): 3,
+               DefId(..): 2,
+               DefId(..): 0,
+               DefId(..): 4,
+               DefId(..): 2,
+               DefId(..): 4,
+               DefId(..): 1,
+               DefId(..): 3,
+               DefId(..): 1,
+               DefId(..): 3,
+               DefId(..): 0,


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args attributes/dump_generics.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/i686-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/attributes/dump_generics.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/i686-unknown-linux-gnu/stage2" "--target=i686-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/i686-unknown-linux-gnu/test/ui/attributes/dump_generics" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/i686-unknown-linux-gnu/native/rust-test-helpers"
stdout: none
--- stderr -------------------------------
error: rustc_dump_generics: DefId(0:3 ~ dump_generics[c1f6]::NiceOfTheFoundation)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:8:1
   |
LL | trait NiceOfTheFoundation<'_a: '_a, '_b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "Self",
                  def_id: DefId(0:3 ~ dump_generics[c1f6]::NiceOfTheFoundation),
                  index: 0,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "'_a",
                  def_id: DefId(0:4 ~ dump_generics[c1f6]::NiceOfTheFoundation::'_a),
                  index: 1,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "'_b",
                  def_id: DefId(0:5 ~ dump_generics[c1f6]::NiceOfTheFoundation::'_b),
                  index: 2,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "N",
                  def_id: DefId(0:6 ~ dump_generics[c1f6]::NiceOfTheFoundation::N),
                  index: 3,
                  pure_wrt_drop: false,
                  kind: Const {
                      has_default: false,
                  },
              },
              GenericParamDef {
                  name: "T",
                  def_id: DefId(0:7 ~ dump_generics[c1f6]::NiceOfTheFoundation::T),
                  index: 4,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "U",
                  def_id: DefId(0:8 ~ dump_generics[c1f6]::NiceOfTheFoundation::U),
                  index: 5,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
          ],
          param_def_id_to_index: {
              DefId(0:8 ~ dump_generics[c1f6]::NiceOfTheFoundation::U): 5,
              DefId(0:7 ~ dump_generics[c1f6]::NiceOfTheFoundation::T): 4,
              DefId(0:6 ~ dump_generics[c1f6]::NiceOfTheFoundation::N): 3,
              DefId(0:5 ~ dump_generics[c1f6]::NiceOfTheFoundation::'_b): 2,
              DefId(0:4 ~ dump_generics[c1f6]::NiceOfTheFoundation::'_a): 1,
              DefId(0:3 ~ dump_generics[c1f6]::NiceOfTheFoundation): 0,
          },
          has_self: true,
          has_late_bound_regions: None,
      }
  --> /checkout/tests/ui/attributes/dump_generics.rs:8:1
   |
LL | trait NiceOfTheFoundation<'_a: '_a, '_b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: rustc_dump_generics: DefId(0:16 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:28:1
   |
LL | pub trait IHopeItMadeLotsOfCode<'a, 'b, const N: usize, T, U: Clone>
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "Self",
                  def_id: DefId(0:16 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode),
                  index: 0,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "'a",
                  def_id: DefId(0:17 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::'a),
                  index: 1,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "'b",
                  def_id: DefId(0:18 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::'b),
                  index: 2,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "N",
                  def_id: DefId(0:19 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::N),
                  index: 3,
                  pure_wrt_drop: false,
                  kind: Const {
                      has_default: false,
                  },
              },
              GenericParamDef {
                  name: "T",
                  def_id: DefId(0:20 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::T),
                  index: 4,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "U",
                  def_id: DefId(0:21 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::U),
                  index: 5,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
          ],
          param_def_id_to_index: {
              DefId(0:17 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::'a): 1,
              DefId(0:16 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode): 0,
              DefId(0:21 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::U): 5,
              DefId(0:20 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::T): 4,
              DefId(0:19 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::N): 3,
              DefId(0:18 ~ dump_generics[c1f6]::IHopeItMadeLotsOfCode::'b): 2,
          },
          has_self: true,
          has_late_bound_regions: None,
      }
  --> /checkout/tests/ui/attributes/dump_generics.rs:28:1
   |
LL | pub trait IHopeItMadeLotsOfCode<'a, 'b, const N: usize, T, U: Clone>
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: rustc_dump_generics: DefId(0:22 ~ dump_generics[c1f6]::LookItsFromCorro)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:33:1
   |
LL | struct LookItsFromCorro<'a, 'b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "'a",
                  def_id: DefId(0:23 ~ dump_generics[c1f6]::LookItsFromCorro::'a),
                  index: 0,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "'b",
                  def_id: DefId(0:24 ~ dump_generics[c1f6]::LookItsFromCorro::'b),
                  index: 1,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "N",
                  def_id: DefId(0:25 ~ dump_generics[c1f6]::LookItsFromCorro::N),
                  index: 2,
                  pure_wrt_drop: false,
                  kind: Const {
                      has_default: false,
                  },
              },
              GenericParamDef {
                  name: "T",
                  def_id: DefId(0:26 ~ dump_generics[c1f6]::LookItsFromCorro::T),
                  index: 3,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "U",
                  def_id: DefId(0:27 ~ dump_generics[c1f6]::LookItsFromCorro::U),
                  index: 4,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
          ],
          param_def_id_to_index: {
              DefId(0:25 ~ dump_generics[c1f6]::LookItsFromCorro::N): 2,
              DefId(0:24 ~ dump_generics[c1f6]::LookItsFromCorro::'b): 1,
              DefId(0:23 ~ dump_generics[c1f6]::LookItsFromCorro::'a): 0,
              DefId(0:27 ~ dump_generics[c1f6]::LookItsFromCorro::U): 4,
              DefId(0:26 ~ dump_generics[c1f6]::LookItsFromCorro::T): 3,
          },
          has_self: false,
          has_late_bound_regions: None,
      }
  --> /checkout/tests/ui/attributes/dump_generics.rs:33:1
   |
LL | struct LookItsFromCorro<'a, 'b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: rustc_dump_generics: DefId(0:31 ~ dump_generics[c1f6]::HaveTakenOver)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:40:1
   |
LL | enum HaveTakenOver<'a: 'a, 'b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "'a",
                  def_id: DefId(0:32 ~ dump_generics[c1f6]::HaveTakenOver::'a),
                  index: 0,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "'b",
                  def_id: DefId(0:33 ~ dump_generics[c1f6]::HaveTakenOver::'b),
                  index: 1,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "N",
                  def_id: DefId(0:34 ~ dump_generics[c1f6]::HaveTakenOver::N),
                  index: 2,
                  pure_wrt_drop: false,
                  kind: Const {
                      has_default: false,
                  },
              },
              GenericParamDef {
                  name: "T",
                  def_id: DefId(0:35 ~ dump_generics[c1f6]::HaveTakenOver::T),
                  index: 3,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "U",
                  def_id: DefId(0:36 ~ dump_generics[c1f6]::HaveTakenOver::U),
                  index: 4,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
          ],
          param_def_id_to_index: {
              DefId(0:34 ~ dump_generics[c1f6]::HaveTakenOver::N): 2,
              DefId(0:33 ~ dump_generics[c1f6]::HaveTakenOver::'b): 1,
              DefId(0:32 ~ dump_generics[c1f6]::HaveTakenOver::'a): 0,
              DefId(0:36 ~ dump_generics[c1f6]::HaveTakenOver::U): 4,
              DefId(0:35 ~ dump_generics[c1f6]::HaveTakenOver::T): 3,
          },
          has_self: false,
          has_late_bound_regions: None,
      }
  --> /checkout/tests/ui/attributes/dump_generics.rs:40:1
   |
LL | enum HaveTakenOver<'a: 'a, 'b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: rustc_dump_generics: DefId(0:47 ~ dump_generics[c1f6]::TheFoundation)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:48:1
   |
LL | union TheFoundation<'a: 'a, 'b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "'a",
                  def_id: DefId(0:48 ~ dump_generics[c1f6]::TheFoundation::'a),
                  index: 0,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "'b",
                  def_id: DefId(0:49 ~ dump_generics[c1f6]::TheFoundation::'b),
                  index: 1,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "N",
                  def_id: DefId(0:50 ~ dump_generics[c1f6]::TheFoundation::N),
                  index: 2,
                  pure_wrt_drop: false,
                  kind: Const {
                      has_default: false,
                  },
              },
              GenericParamDef {
                  name: "T",
                  def_id: DefId(0:51 ~ dump_generics[c1f6]::TheFoundation::T),
                  index: 3,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "U",
                  def_id: DefId(0:52 ~ dump_generics[c1f6]::TheFoundation::U),
                  index: 4,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
          ],
          param_def_id_to_index: {
              DefId(0:51 ~ dump_generics[c1f6]::TheFoundation::T): 3,
              DefId(0:50 ~ dump_generics[c1f6]::TheFoundation::N): 2,
              DefId(0:49 ~ dump_generics[c1f6]::TheFoundation::'b): 1,
              DefId(0:48 ~ dump_generics[c1f6]::TheFoundation::'a): 0,
              DefId(0:52 ~ dump_generics[c1f6]::TheFoundation::U): 4,
          },
          has_self: false,
          has_late_bound_regions: None,
      }
  --> /checkout/tests/ui/attributes/dump_generics.rs:48:1
   |
LL | union TheFoundation<'a: 'a, 'b, const N: usize, T, U: Clone> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: rustc_dump_generics: DefId(0:56 ~ dump_generics[c1f6]::i_dare_you)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:55:1
   |
LL | const fn i_dare_you<'a: 'a, 'b, const N: usize, T, U>(you_can: &'a bool, _: &'b [(T, U); N]) {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "'a",
                  def_id: DefId(0:57 ~ dump_generics[c1f6]::i_dare_you::'a),
                  index: 0,
                  pure_wrt_drop: false,
                  kind: Lifetime,
              },
              GenericParamDef {
                  name: "N",
                  def_id: DefId(0:59 ~ dump_generics[c1f6]::i_dare_you::N),
                  index: 1,
                  pure_wrt_drop: false,
                  kind: Const {
                      has_default: false,
                  },
              },
              GenericParamDef {
                  name: "T",
                  def_id: DefId(0:60 ~ dump_generics[c1f6]::i_dare_you::T),
                  index: 2,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
              GenericParamDef {
                  name: "U",
                  def_id: DefId(0:61 ~ dump_generics[c1f6]::i_dare_you::U),
                  index: 3,
                  pure_wrt_drop: false,
                  kind: Type {
                      has_default: false,
                      synthetic: false,
                  },
              },
          ],
          param_def_id_to_index: {
              DefId(0:59 ~ dump_generics[c1f6]::i_dare_you::N): 1,
              DefId(0:57 ~ dump_generics[c1f6]::i_dare_you::'a): 0,
              DefId(0:61 ~ dump_generics[c1f6]::i_dare_you::U): 3,
              DefId(0:60 ~ dump_generics[c1f6]::i_dare_you::T): 2,
          },
          has_self: false,
          has_late_bound_regions: Some(
              /checkout/tests/ui/attributes/dump_generics.rs:55:29: 55:31 (#0),
          ),
      }
  --> /checkout/tests/ui/attributes/dump_generics.rs:55:1
   |
LL | const fn i_dare_you<'a: 'a, 'b, const N: usize, T, U>(you_can: &'a bool, _: &'b [(T, U); N]) {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: rustc_dump_generics: DefId(0:64 ~ dump_generics[c1f6]::IfYouNeed)
##[error]  --> /checkout/tests/ui/attributes/dump_generics.rs:66:1
   |
LL | trait IfYouNeed<'_a: '_a, '_b, const N: usize, T, U: Clone> {}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: Generics {
          parent: None,
          parent_count: 0,
          own_params: [
              GenericParamDef {
                  name: "Self",
                  def_id: DefId(0:64 ~ dump_generics[c1f6]::IfYouNeed),
                  index: 0,
                  pure_wrt_drop: false,

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

rust-bors Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

💔 Test for 7c53a80 failed: CI. Failed job:

@jhpratt jhpratt closed this Jun 11, 2026
@rust-bors rust-bors Bot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jun 11, 2026
@rust-bors

rust-bors Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

PR #157384, which is a member of this rollup, was unapproved.

@rust-bors rust-bors Bot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 11, 2026
@jhpratt jhpratt deleted the rollup-UIfbKIF branch June 11, 2026 02:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-compiletest Area: The compiletest test runner A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-testsuite Area: The testsuite used to check the correctness of rustc O-windows Operating system: Windows rollup A PR which is a rollup S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.