Skip to content

trait solver: Capture binder region constraints while relating#157984

Open
Dnreikronos wants to merge 4 commits into
rust-lang:mainfrom
Dnreikronos:trait_solver/binder_region_constraints
Open

trait solver: Capture binder region constraints while relating#157984
Dnreikronos wants to merge 4 commits into
rust-lang:mainfrom
Dnreikronos:trait_solver/binder_region_constraints

Conversation

@Dnreikronos

@Dnreikronos Dnreikronos commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Fixes #157859

The issue repro is a pretty good example of how this slipped through: the principal upcast path looked fixed, but other relation paths could still drop binder-region constraints. Fwiw, I think centralizing this in the relation code is the cleaner move here, instead of chasing every object-upcast call site one by one.

This records NextGen region constraints from normal relation, structural alias equality, and the small goal-returning relation helper used by object candidate code. ReVars keep their concrete outlives edges too, so we don't flatten useful info into plain ambiguity. Added the original issue repro and a projection-bound variant, e.g. the kind of path I'd expect to regress later if this only lived in the principal upcast code.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Jun 16, 2026
@rustbot

rustbot commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

r? @mejrs

rustbot has assigned @mejrs.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler, types
  • compiler, types expanded to 73 candidates
  • Random selection from 21 candidates

@rust-log-analyzer

This comment has been minimized.

@Dnreikronos Dnreikronos force-pushed the trait_solver/binder_region_constraints branch from f411fec to d78cef7 Compare June 16, 2026 19:03
@mejrs

mejrs commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

r? @lcnr

@rustbot rustbot assigned lcnr and unassigned mejrs Jun 16, 2026
@lcnr

lcnr commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

r? BoxyUwU

@rustbot rustbot assigned BoxyUwU and unassigned lcnr Jun 17, 2026
@rustbot

rustbot commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

BoxyUwU is currently at their maximum review capacity.
They may take a while to respond.

}
}

let resolve_region = |r: I::Region| match r.kind() {

@BoxyUwU BoxyUwU Jun 19, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why resolve regions?

View changes since the review

}
ty::Invariant => {
region_constraints.push(RegionConstraint::RegionOutlives(a, b));
region_constraints.push(RegionConstraint::RegionOutlives(b, a));

@BoxyUwU BoxyUwU Jun 19, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to call infcx.register_solver_region_constraint here instead of building a list and manually propagating them all upwards?

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, i think you're right. imo regions should call infcx.register_solver_region_constraint directly when -Zassumptions-on-binders is on, and use sub_regions / equate_regions only on the old path.

with that i can drop the *_with_region_constraints plumbing too. fwiw i don't think resolving the regions first is needed anymore unless one of the tests says otherwise.

@BoxyUwU BoxyUwU Jun 19, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this logic shouldn't be used under -Zassumptions-on-binders, actually in theory sub_regions probably should ICE under -Zassumptions-on-binders because those region constraints don't really do anything

View changes since the review

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or maybe sub_regions should be registering new style region constraints... unsure

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, this is the same issue. i'll make SolverRelating::regions avoid sub_regions / equate_regions under -Zassumptions-on-binders and register the new-style constraints directly instead. imo changing sub_regions itself can be a follow-up if we still want that after this.

@rust-log-analyzer

This comment has been minimized.

@Dnreikronos

Dnreikronos commented Jun 20, 2026

Copy link
Copy Markdown
Contributor Author

@BoxyUwU fwiw, i think the ci failure is still compatible with your suggestion. the direct registration path lgtm to me, but the current version is probably registering from too many relation contexts.

the bad bit seems to be solverrelating::regions(): under -zassumptions-on-binders it always pushes regionoutlives into the solver constraint storage. some of those relation calls happen under enter_forall_with_empty_assumptions, so later placeholder handling has no assumptions to discharge the constraint and we hit the max_universe(...) < u assert.

imo the fix is not to go back to manually bubbling a list everywhere. i'd rather keep direct registration, but only in contexts where the solver owns the binder assumptions, or keep the constraints local while relating a binder and pull them out before registering. idk which shape is cleaner yet, but unconditional registration in regions() seems too wide.

@Dnreikronos

Dnreikronos commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

follow-up after pushing 0d93b4c:

i tried to keep the direct-registration shape, but idk, it still looked too broad in practice. buffering constraints around binder relation did not clear the reported failures for me.

imo the safer fix is to keep the region constraints local while relating, then register the collected next-gen constraint only from the solver-owned relation entrypoints. ltm this still follows the direction boxy was pointing at, without letting solverrelating::regions() register constraints from the empty-assumption binder probes.

i checked the same failure cases locally:

  • x.py check compiler/rustc_type_ir compiler/rustc_next_trait_solver
  • x.py test tests/ui/assumptions_on_binders/alias_outlives.rs tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-1.rs tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-2.rs tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.rs tests/ui/assumptions_on_binders/principal-upcast-region-eq-issue-157859.rs tests/ui/assumptions_on_binders/trait-upcast-projection-region-eq.rs
  • x.py test tidy

@BoxyUwU

BoxyUwU commented Jun 23, 2026

Copy link
Copy Markdown
Member

some of those relation calls happen under enter_forall_with_empty_assumptions, so later placeholder handling has no assumptions to discharge the constraint and we hit the max_universe(...) < u assert.

in theory that shouldn't cause us to hit an assert. if we have empty assumptions then we'll rewrite the constraints to false and (eventually) get an error 🤔 if we were doing this in a enter_forall_without_assumptions it would make sense to me we get ICEs. though I wouldn't expect it to be due to the max_universe(..) < n assertion 🤔 I would expect it to be due to missing entries in the assumptions list in the InferCtxt.

i would like to fully understand what's going on with the ICEs when always registering the next gen region constraints :3 can you look more into what's going on there, if you could push the code that causes those ICEs to happen so I can see the CI failure too that would be useful :3

@Dnreikronos

Copy link
Copy Markdown
Contributor Author

i looked into the unconditional direct-registration version locally.

imo it confirms the failure mode from my earlier guess: the new repro tests pass, but the broader assumptions-on-binders set fails.

specifically:

  • alias_outlives.rs hits the max_universe(infcx, constraint.clone()) < u assertion
  • the type_relation_binders_inside_solver-* tests either ice or reject code that should pass

so idk, direct registration from solverrelating::regions() still feels too broad to me. lgtm in principle, but only if we can keep it out of binder probes with empty assumptions. ltm the current local-collection shape is the safer boundary for now: collect while relating, then register from the solver-owned relation entrypoints.

i can push the failing experiment to a separate branch if seeing ci on that exact shape would help, but i'd rather not force-push it over this pr branch since the current version is passing.

checked with:

  • x.py check compiler/rustc_type_ir compiler/rustc_next_trait_solver
  • x.py test tests/ui/assumptions_on_binders/alias_outlives.rs tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-1.rs tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-2.rs tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.rs tests/ui/assumptions_on_binders/principal-upcast-region-eq-issue-157859.rs tests/ui/assumptions_on_binders/trait-upcast-projection-region-eq.rs
  • x.py test tidy

@BoxyUwU

BoxyUwU commented Jun 23, 2026

Copy link
Copy Markdown
Member

like I said, I don't understand why it's hitting that assertion 😅 can you explain why that assertion is getting hit. i can't properly evaluate this alternate approach without understanding why the other one doesn't work

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job aarch64-gnu-llvm-21-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
---- [ui] tests/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption.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/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-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/aarch64-unknown-linux-gnu/test/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver" "-Zassumptions-on-binders"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `S: OuterBinder<'a, 'c, T0>` is not satisfied
##[error]  --> /checkout/tests/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption.rs:34:49
   |
LL | impl<'a, 'c, T0, S> OuterBinder<'a, 'c, T0> for S
   |                                                 ^ the trait `Trait<'_, '_>` is not implemented for `S`
   |
note: required for `S` to implement `for<'b> InnerBinder<'_, 'b, '_>`
  --> /checkout/tests/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption.rs:28:21
   |
LL | impl<'a, 'b, 'c, S> InnerBinder<'a, 'b, 'c> for S
   |                     ^^^^^^^^^^^^^^^^^^^^^^^     ^
LL | where
LL |     S: Trait<'a, 'b>,
   |        ------------- unsatisfied trait bound introduced here
note: required for `S` to implement `OuterBinder<'a, 'c, T0>`
  --> /checkout/tests/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption.rs:34:21
   |
LL | impl<'a, 'c, T0, S> OuterBinder<'a, 'c, T0> for S
   |                     ^^^^^^^^^^^^^^^^^^^^^^^     ^
LL | where
LL |     for<'b> S: InnerBinder<'a, 'b, 'c>, {}
   |                ----------------------- unsatisfied trait bound introduced here
help: consider further restricting type parameter `S` with trait `Trait`
   |
LL |     for<'b> S: InnerBinder<'a, 'b, 'c> + Trait<'_, '_>, {}
   |                                        +++++++++++++++


thread 'rustc' (32011) panicked at compiler/rustc_type_ir/src/region_constraint.rs:657:13:
assertion failed: max_universe(infcx, constraint.clone()) < u
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic
   3: rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
   4: <alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>> as core::iter::traits::iterator::Iterator>::try_fold::<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::iter::adapters::map::map_try_fold<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}, alloc::vec::in_place_collect::write_in_place_with_drop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>::{closure#0}>::{closure#0}, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>>
   5: alloc::vec::in_place_collect::from_iter_in_place::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>
   6: <alloc::boxed::Box<[rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>]> as core::iter::traits::collect::FromIterator<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>>::from_iter::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}>>
   7: rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
   8: <alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>> as core::iter::traits::iterator::Iterator>::try_fold::<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::iter::adapters::map::map_try_fold<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>, rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#0}, alloc::vec::in_place_collect::write_in_place_with_drop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>::{closure#0}>::{closure#0}, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>>
   9: alloc::vec::in_place_collect::from_iter_in_place::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#0}>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>
  10: rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
  11: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  12: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::probe::<core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_inner<<rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_single_candidate<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}>::{closure#0}>
  13: <rustc_next_trait_solver::solve::eval_ctxt::probe::TraitProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}>>::enter::<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>
  14: <rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate::<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>
  15: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}
  16: <rustc_middle::ty::context::TyCtxt as rustc_type_ir::interner::Interner>::for_each_relevant_impl::<core::result::Result<(), rustc_type_ir::solve::RerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}>
  17: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>
  18: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_trait_goal
  19: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  20: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  21: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  22: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  23: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  24: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  25: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  26: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  27: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  28: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::try_evaluate_added_goals
  29: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  30: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::probe::<core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_inner<<rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_single_candidate<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}>::{closure#0}>
  31: <rustc_next_trait_solver::solve::eval_ctxt::probe::TraitProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}>>::enter::<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>
  32: <rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate::<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>
  33: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}
  34: <rustc_middle::ty::context::TyCtxt as rustc_type_ir::interner::Interner>::for_each_relevant_impl::<core::result::Result<(), rustc_type_ir::solve::RerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}>
  35: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>
  36: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_trait_goal
  37: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  38: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  39: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  40: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  41: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  42: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  43: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  44: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  45: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  46: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::try_evaluate_added_goals
  47: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  48: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_well_formed_goal
  49: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  50: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  51: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  52: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  53: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  54: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  55: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  56: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  57: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  58: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_root::<core::result::Result<rustc_next_trait_solver::solve::GoalEvaluation<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_trait_selection::solve::delegate::SolverDelegate as rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal::{closure#0}::{closure#0}>
  59: <rustc_trait_selection::solve::delegate::SolverDelegate as rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal
  60: <rustc_trait_selection::solve::fulfill::FulfillmentCtxt<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::try_evaluate_obligations
  61: <rustc_trait_selection::solve::fulfill::FulfillmentCtxt<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::evaluate_obligations_error_on_ambiguity
  62: <rustc_trait_selection::traits::engine::ObligationCtxt>::evaluate_obligations_error_on_ambiguity
  63: rustc_hir_analysis::check::wfcheck::enter_wf_checking_ctxt::<rustc_hir_analysis::check::check::check_item_type::{closure#0}>
  64: rustc_hir_analysis::check::check::check_item_type
  65: rustc_hir_analysis::check::wfcheck::check_well_formed
      [... omitted 2 frames ...]
  66: rustc_middle::query::inner::query_ensure_result::<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::ErasedData<[u8; 1]>, rustc_middle::dep_graph::graph::DepNodeIndex>, ()>
  67: std::panicking::catch_unwind::<core::result::Result<(), rustc_span::ErrorGuaranteed>, core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::try_par_for_each_in<&[rustc_span::def_id::LocalDefId], rustc_span::ErrorGuaranteed, <rustc_middle::hir::ModuleItems>::par_opaques<rustc_hir_analysis::check::wfcheck::check_type_wf::{closure#5}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
  68: rustc_data_structures::sync::parallel::try_par_for_each_in::<&[rustc_hir::hir::ItemId], rustc_span::ErrorGuaranteed, <rustc_middle::hir::ModuleItems>::par_items<rustc_hir_analysis::check::wfcheck::check_type_wf::{closure#0}>::{closure#0}>
  69: rustc_hir_analysis::check::wfcheck::check_type_wf
      [... omitted 2 frames ...]
  70: <rustc_session::session::Session>::time::<(), rustc_hir_analysis::check_crate::{closure#0}>
  71: rustc_hir_analysis::check_crate
  72: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  73: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
  74: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  75: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  76: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  77: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
  78: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  79: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.98.0-nightly (30b0a471d 2026-06-23) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z next-solver -Z assumptions-on-binders

query stack during panic:
#0 [check_well_formed] checking that `REGIONCK_ENV` is well-formed
#1 [check_type_wf] checking that types are well-formed
#2 [analysis] running analysis passes on crate `implied_higher_ranked_alias_outlives_assumption`
end of query stack
error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0277`.
------------------------------------------

---- [ui] tests/ui/assumptions_on_binders/implied_higher_ranked_alias_outlives_assumption.rs stdout end ----
---- [ui] tests/ui/assumptions_on_binders/alias_outlives.rs stdout ----

error: Error: expected failure status (Some(1)) but received status Some(101).
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/assumptions_on_binders/alias_outlives.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/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-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/aarch64-unknown-linux-gnu/test/ui/assumptions_on_binders/alias_outlives" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver" "-Zassumptions-on-binders"
stdout: none
--- stderr -------------------------------

thread 'rustc' (32010) panicked at compiler/rustc_type_ir/src/region_constraint.rs:657:13:
assertion failed: max_universe(infcx, constraint.clone()) < u
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic
   3: rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
   4: <alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>> as core::iter::traits::iterator::Iterator>::try_fold::<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::iter::adapters::map::map_try_fold<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}, alloc::vec::in_place_collect::write_in_place_with_drop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>::{closure#0}>::{closure#0}, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>>
   5: alloc::vec::in_place_collect::from_iter_in_place::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>
   6: <alloc::boxed::Box<[rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>]> as core::iter::traits::collect::FromIterator<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>>::from_iter::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}>>
   7: rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
   8: <alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>> as core::iter::traits::iterator::Iterator>::try_fold::<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::iter::adapters::map::map_try_fold<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>, rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#0}, alloc::vec::in_place_collect::write_in_place_with_drop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>::{closure#0}>::{closure#0}, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>>
   9: alloc::vec::in_place_collect::from_iter_in_place::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#0}>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>
  10: rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
  11: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  12: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::probe::<core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_inner<<rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_single_candidate<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}>::{closure#0}>
  13: <rustc_next_trait_solver::solve::eval_ctxt::probe::TraitProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}>>::enter::<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>
  14: <rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate::<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>
  15: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}
  16: <rustc_middle::ty::context::TyCtxt as rustc_type_ir::interner::Interner>::for_each_relevant_impl::<core::result::Result<(), rustc_type_ir::solve::RerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}>
  17: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>
  18: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_trait_goal
  19: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  20: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  21: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  22: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  23: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  24: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  25: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  26: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  27: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  28: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::try_evaluate_added_goals
  29: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  30: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_well_formed_goal
  31: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  32: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  33: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  34: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  35: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  36: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  37: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  38: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  39: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  40: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_root::<core::result::Result<rustc_next_trait_solver::solve::GoalEvaluation<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_trait_selection::solve::delegate::SolverDelegate as rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal::{closure#0}::{closure#0}>
  41: <rustc_trait_selection::solve::delegate::SolverDelegate as rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal
  42: <rustc_trait_selection::solve::fulfill::FulfillmentCtxt<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::try_evaluate_obligations
  43: <rustc_trait_selection::solve::fulfill::FulfillmentCtxt<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::evaluate_obligations_error_on_ambiguity
  44: <rustc_trait_selection::traits::engine::ObligationCtxt>::evaluate_obligations_error_on_ambiguity
  45: rustc_hir_analysis::check::wfcheck::enter_wf_checking_ctxt::<rustc_hir_analysis::check::check::check_item_type::{closure#0}>
  46: rustc_hir_analysis::check::check::check_item_type
  47: rustc_hir_analysis::check::wfcheck::check_well_formed
      [... omitted 2 frames ...]
  48: rustc_middle::query::inner::query_ensure_result::<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::ErasedData<[u8; 1]>, rustc_middle::dep_graph::graph::DepNodeIndex>, ()>
  49: std::panicking::catch_unwind::<core::result::Result<(), rustc_span::ErrorGuaranteed>, core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::try_par_for_each_in<&[rustc_span::def_id::LocalDefId], rustc_span::ErrorGuaranteed, <rustc_middle::hir::ModuleItems>::par_opaques<rustc_hir_analysis::check::wfcheck::check_type_wf::{closure#5}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
  50: rustc_data_structures::sync::parallel::try_par_for_each_in::<&[rustc_hir::hir::ItemId], rustc_span::ErrorGuaranteed, <rustc_middle::hir::ModuleItems>::par_items<rustc_hir_analysis::check::wfcheck::check_type_wf::{closure#0}>::{closure#0}>
  51: rustc_hir_analysis::check::wfcheck::check_type_wf
      [... omitted 2 frames ...]
  52: <rustc_session::session::Session>::time::<(), rustc_hir_analysis::check_crate::{closure#0}>
  53: rustc_hir_analysis::check_crate
  54: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  55: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
  56: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  57: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  58: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  59: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
  60: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  61: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.98.0-nightly (30b0a471d 2026-06-23) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z next-solver -Z assumptions-on-binders

query stack during panic:
#0 [check_well_formed] checking that `REGIONCK_ENV_PASS` is well-formed
#1 [check_type_wf] checking that types are well-formed
#2 [analysis] running analysis passes on crate `alias_outlives`
end of query stack

thread 'rustc' (32010) panicked at compiler/rustc_type_ir/src/region_constraint.rs:657:13:
assertion failed: max_universe(infcx, constraint.clone()) < u
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic
   3: rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
   4: <alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>> as core::iter::traits::iterator::Iterator>::try_fold::<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::iter::adapters::map::map_try_fold<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}, alloc::vec::in_place_collect::write_in_place_with_drop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>::{closure#0}>::{closure#0}, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>>
   5: alloc::vec::in_place_collect::from_iter_in_place::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>
   6: <alloc::boxed::Box<[rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>]> as core::iter::traits::collect::FromIterator<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>>::from_iter::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#2}>>
   7: rustc_type_ir::region_constraint::pull_region_outlives_constraints_out_of_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
   8: <alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>> as core::iter::traits::iterator::Iterator>::try_fold::<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::iter::adapters::map::map_try_fold<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>, alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>, rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#0}, alloc::vec::in_place_collect::write_in_place_with_drop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>::{closure#0}>::{closure#0}, core::result::Result<alloc::vec::in_place_drop::InPlaceDrop<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, !>>
   9: alloc::vec::in_place_collect::from_iter_in_place::<core::iter::adapters::map::Map<alloc::vec::into_iter::IntoIter<rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>::{closure#0}::{closure#0}>, rustc_type_ir::region_constraint::RegionConstraint<rustc_middle::ty::context::TyCtxt>>
  10: rustc_type_ir::region_constraint::eagerly_handle_placeholders_in_universe::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>
  11: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  12: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::probe::<core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_inner<<rustc_next_trait_solver::solve::eval_ctxt::probe::ProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}, rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>>>::enter_single_candidate<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}>::{closure#0}>
  13: <rustc_next_trait_solver::solve::eval_ctxt::probe::TraitProbeCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::probe_trait_candidate::{closure#0}>>::enter::<<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>::{closure#0}>
  14: <rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt> as rustc_next_trait_solver::solve::assembly::GoalKind<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::consider_impl_candidate::<<rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}::{closure#0}>
  15: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}
  16: <rustc_middle::ty::context::TyCtxt as rustc_type_ir::interner::Interner>::for_each_relevant_impl::<core::result::Result<(), rustc_type_ir::solve::RerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>::{closure#0}>
  17: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir::predicate::TraitPredicate<rustc_middle::ty::context::TyCtxt>>
  18: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_trait_goal
  19: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  20: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  21: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  22: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  23: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  24: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  25: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  26: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  27: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  28: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::try_evaluate_added_goals
  29: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response
  30: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_well_formed_goal
  31: <rustc_infer::infer::InferCtxt as rustc_type_ir::infer_ctxt::InferCtxtLike>::enter_forall_without_assumptions::<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_forall_with_assumptions<rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>, core::result::Result<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::compute_goal::{closure#0}>::{closure#0}>
  32: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_canonical::<rustc_type_ir::canonical::Canonical<rustc_middle::ty::context::TyCtxt, rustc_type_ir::solve::Response<rustc_middle::ty::context::TyCtxt>>, <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal::{closure#0}::{closure#0}>
  33: <rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate> as rustc_type_ir::search_graph::Delegate>::compute_goal
  34: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_in_task
  35: <rustc_middle::dep_graph::graph::DepGraph>::with_anon_task::<<rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}, rustc_type_ir::search_graph::EvaluationResult<rustc_middle::ty::context::TyCtxt>>
  36: <rustc_type_ir::search_graph::SearchGraph<rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<rustc_trait_selection::solve::delegate::SolverDelegate>, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  37: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_cold
  38: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal_raw
  39: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::evaluate_goal
  40: <rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<rustc_trait_selection::solve::delegate::SolverDelegate, rustc_middle::ty::context::TyCtxt>>::enter_root::<core::result::Result<rustc_next_trait_solver::solve::GoalEvaluation<rustc_middle::ty::context::TyCtxt>, rustc_type_ir::solve::NoSolutionOrRerunNonErased>, <rustc_trait_selection::solve::delegate::SolverDelegate as rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal::{closure#0}::{closure#0}>
  41: <rustc_trait_selection::solve::delegate::SolverDelegate as rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal
  42: <rustc_trait_selection::solve::fulfill::FulfillmentCtxt<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::try_evaluate_obligations
  43: <rustc_trait_selection::solve::fulfill::FulfillmentCtxt<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::evaluate_obligations_error_on_ambiguity
  44: <rustc_trait_selection::traits::engine::ObligationCtxt>::evaluate_obligations_error_on_ambiguity
  45: rustc_hir_analysis::check::wfcheck::enter_wf_checking_ctxt::<rustc_hir_analysis::check::check::check_item_type::{closure#0}>
  46: rustc_hir_analysis::check::check::check_item_type
  47: rustc_hir_analysis::check::wfcheck::check_well_formed
      [... omitted 2 frames ...]
  48: rustc_middle::query::inner::query_ensure_result::<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::ErasedData<[u8; 1]>, rustc_middle::dep_graph::graph::DepNodeIndex>, ()>
  49: std::panicking::catch_unwind::<core::result::Result<(), rustc_span::ErrorGuaranteed>, core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::try_par_for_each_in<&[rustc_span::def_id::LocalDefId], rustc_span::ErrorGuaranteed, <rustc_middle::hir::ModuleItems>::par_opaques<rustc_hir_analysis::check::wfcheck::check_type_wf::{closure#5}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
  50: rustc_data_structures::sync::parallel::try_par_for_each_in::<&[rustc_hir::hir::ItemId], rustc_span::ErrorGuaranteed, <rustc_middle::hir::ModuleItems>::par_items<rustc_hir_analysis::check::wfcheck::check_type_wf::{closure#0}>::{closure#0}>
  51: rustc_hir_analysis::check::wfcheck::check_type_wf
      [... omitted 2 frames ...]
  52: <rustc_session::session::Session>::time::<(), rustc_hir_analysis::check_crate::{closure#0}>
  53: rustc_hir_analysis::check_crate
  54: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  55: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
  56: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  57: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  58: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  59: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
  60: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  61: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.98.0-nightly (30b0a471d 2026-06-23) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z next-solver -Z assumptions-on-binders

query stack during panic:
#0 [check_well_formed] checking that `REGIONCK_ENV_FAIL` is well-formed
#1 [check_type_wf] checking that types are well-formed
#2 [analysis] running analysis passes on crate `alias_outlives`
end of query stack
------------------------------------------

---- [ui] tests/ui/assumptions_on_binders/alias_outlives.rs stdout end ----
---- [ui] tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-1.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-1.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/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-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/aarch64-unknown-linux-gnu/test/ui/assumptions_on_binders/type_relation_binders_inside_solver-1" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver" "-Zassumptions-on-binders"
stdout: none
--- stderr -------------------------------
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: errors selecting obligation during MIR typeck: InstantiateOpaqueType DefId(0:12 ~ type_relation_binders_inside_solver_1[334a]::bar) [TrueError]
   |
   = note: delayed at compiler/rustc_trait_selection/src/traits/query/type_op/custom.rs:136:29
              0: <std::backtrace::Backtrace>::create
              1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
              2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
              3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
              4: <rustc_errors::DiagCtxtHandle>::delayed_bug::<alloc::string::String>
              5: <rustc_infer::infer::InferCtxt>::commit_if_ok::<(), rustc_span::ErrorGuaranteed, rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints<rustc_borrowck::type_check::InstantiateOpaqueType, (), <rustc_borrowck::type_check::InstantiateOpaqueType as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform::{closure#0}>::{closure#0}>
              6: rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints::<rustc_borrowck::type_check::InstantiateOpaqueType, (), <rustc_borrowck::type_check::InstantiateOpaqueType as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform::{closure#0}>
              7: <rustc_borrowck::type_check::InstantiateOpaqueType as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform
              8: rustc_borrowck::type_check::canonical::fully_perform_op_raw::<(), rustc_borrowck::type_check::InstantiateOpaqueType>
              9: <rustc_borrowck::type_check::TypeChecker>::fully_perform_op::<(), rustc_borrowck::type_check::InstantiateOpaqueType>
             10: <rustc_borrowck::type_check::relate_tys::NllTypeRelating as rustc_type_ir::relate::combine::PredicateEmittingRelation<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>>::register_predicates::<[rustc_type_ir::binder::Binder<rustc_middle::ty::context::TyCtxt, rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>>; 1]>
             11: <rustc_borrowck::type_check::relate_tys::NllTypeRelating as rustc_type_ir::relate::combine::PredicateEmittingRelation<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>>::register_alias_relate_predicate
             12: rustc_type_ir::relate::combine::super_combine_tys::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt, rustc_borrowck::type_check::relate_tys::NllTypeRelating>
             13: <rustc_borrowck::type_check::relate_tys::NllTypeRelating as rustc_type_ir::relate::TypeRelation<rustc_middle::ty::context::TyCtxt>>::tys
             14: <rustc_borrowck::type_check::TypeChecker>::relate_types
             15: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_terminator
             16: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_body
             17: rustc_borrowck::type_check::type_check
             18: rustc_borrowck::borrowck_collect_region_constraints
             19: <rustc_borrowck::root_cx::BorrowCheckRootCtxt>::do_mir_borrowck
             20: rustc_borrowck::mir_borrowck
             21: rustc_query_impl::query_impl::mir_borrowck::invoke_provider_fn::__rust_begin_short_backtrace
             22: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_data_structures::vec_cache::VecCache<rustc_hir_id::OwnerId, rustc_middle::query::erase::ErasedData<[u8; 8]>, rustc_middle::dep_graph::graph::DepNodeIndex>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
             23: rustc_query_impl::execution::try_execute_query::<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::ErasedData<[u8; 8]>, rustc_middle::dep_graph::graph::DepNodeIndex>, false>
             24: rustc_query_impl::query_impl::mir_borrowck::execute_query_non_incr::__rust_end_short_backtrace
             25: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
             26: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
             27: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}>
             28: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
             29: rustc_interface::passes::analysis
             30: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
             31: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
             32: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
             33: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
             34: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
             35: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
             36: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
             37: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
             38: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
             39: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
             40: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
             41: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
             42: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
             43: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
             44: <std::sys::thread::unix::Thread>::new::thread_start
             45: <unknown>
             46: <unknown>
           

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

note: rustc 1.98.0-nightly (30b0a471d 2026-06-23) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z next-solver -Z assumptions-on-binders

query stack during panic:
end of query stack
------------------------------------------

---- [ui] tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-1.rs stdout end ----
---- [ui] tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-2.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-2.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/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-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/aarch64-unknown-linux-gnu/test/ui/assumptions_on_binders/type_relation_binders_inside_solver-2" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver" "-Zassumptions-on-binders"
stdout: none
--- stderr -------------------------------
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: errors selecting obligation during MIR typeck: InstantiateOpaqueType DefId(0:9 ~ type_relation_binders_inside_solver_2[53f7]::bar) [TrueError]
   |
   = note: delayed at compiler/rustc_trait_selection/src/traits/query/type_op/custom.rs:136:29
              0: <std::backtrace::Backtrace>::create
              1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
              2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
              3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
              4: <rustc_errors::DiagCtxtHandle>::delayed_bug::<alloc::string::String>
              5: <rustc_infer::infer::InferCtxt>::commit_if_ok::<(), rustc_span::ErrorGuaranteed, rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints<rustc_borrowck::type_check::InstantiateOpaqueType, (), <rustc_borrowck::type_check::InstantiateOpaqueType as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform::{closure#0}>::{closure#0}>
              6: rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints::<rustc_borrowck::type_check::InstantiateOpaqueType, (), <rustc_borrowck::type_check::InstantiateOpaqueType as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform::{closure#0}>
              7: <rustc_borrowck::type_check::InstantiateOpaqueType as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform
              8: rustc_borrowck::type_check::canonical::fully_perform_op_raw::<(), rustc_borrowck::type_check::InstantiateOpaqueType>
              9: <rustc_borrowck::type_check::TypeChecker>::fully_perform_op::<(), rustc_borrowck::type_check::InstantiateOpaqueType>
             10: <rustc_borrowck::type_check::relate_tys::NllTypeRelating as rustc_type_ir::relate::combine::PredicateEmittingRelation<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>>::register_predicates::<[rustc_type_ir::binder::Binder<rustc_middle::ty::context::TyCtxt, rustc_type_ir::predicate_kind::PredicateKind<rustc_middle::ty::context::TyCtxt>>; 1]>
             11: <rustc_borrowck::type_check::relate_tys::NllTypeRelating as rustc_type_ir::relate::combine::PredicateEmittingRelation<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt>>::register_alias_relate_predicate
             12: rustc_type_ir::relate::combine::super_combine_tys::<rustc_infer::infer::InferCtxt, rustc_middle::ty::context::TyCtxt, rustc_borrowck::type_check::relate_tys::NllTypeRelating>
             13: <rustc_borrowck::type_check::relate_tys::NllTypeRelating as rustc_type_ir::relate::TypeRelation<rustc_middle::ty::context::TyCtxt>>::tys
             14: <rustc_borrowck::type_check::TypeChecker>::relate_types
             15: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_terminator
             16: <rustc_borrowck::type_check::TypeChecker as rustc_middle::mir::visit::Visitor>::visit_body
             17: rustc_borrowck::type_check::type_check
             18: rustc_borrowck::borrowck_collect_region_constraints
             19: <rustc_borrowck::root_cx::BorrowCheckRootCtxt>::do_mir_borrowck
             20: rustc_borrowck::mir_borrowck
             21: rustc_query_impl::query_impl::mir_borrowck::invoke_provider_fn::__rust_begin_short_backtrace
             22: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_data_structures::vec_cache::VecCache<rustc_hir_id::OwnerId, rustc_middle::query::erase::ErasedData<[u8; 8]>, rustc_middle::dep_graph::graph::DepNodeIndex>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
             23: rustc_query_impl::execution::try_execute_query::<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::ErasedData<[u8; 8]>, rustc_middle::dep_graph::graph::DepNodeIndex>, false>
             24: rustc_query_impl::query_impl::mir_borrowck::execute_query_non_incr::__rust_end_short_backtrace
             25: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
             26: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
             27: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}>
             28: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
             29: rustc_interface::passes::analysis
             30: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
             31: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
             32: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
             33: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
             34: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
             35: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
             36: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
             37: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
             38: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
             39: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
             40: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
             41: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
             42: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
             43: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
             44: <std::sys::thread::unix::Thread>::new::thread_start
             45: <unknown>
             46: <unknown>
           

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

note: rustc 1.98.0-nightly (30b0a471d 2026-06-23) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z next-solver -Z assumptions-on-binders

query stack during panic:
end of query stack
------------------------------------------

---- [ui] tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-2.rs stdout end ----
---- [ui] tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.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/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-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/aarch64-unknown-linux-gnu/test/ui/assumptions_on_binders/type_relation_binders_inside_solver-3" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "-Znext-solver" "-Zassumptions-on-binders"
stdout: none
--- stderr -------------------------------
error[E0277]: the trait bound `for<'b> fn(&'b ()): Trait` is not satisfied
##[error]  --> /checkout/tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.rs:20:15
   |
LL |     req_trait(mk());
   |     --------- ^^^^ the trait `Trait` is not implemented for `for<'b> fn(&'b ())`
   |     |
   |     required by a bound introduced by this call
   |
help: this trait has no implementations, consider adding one
  --> /checkout/tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.rs:10:1
   |
LL | trait Trait { }
   | ^^^^^^^^^^^
note: required by a bound in `req_trait`
  --> /checkout/tests/ui/assumptions_on_binders/type_relation_binders_inside_solver-3.rs:12:17
   |
LL | fn req_trait<T: Trait>(_: T) { }
   |                 ^^^^^ required by this bound in `req_trait`

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0277`.
------------------------------------------

@Dnreikronos

Dnreikronos commented Jun 23, 2026

Copy link
Copy Markdown
Contributor Author

yeah, my bad! i think i explained the empty-assumptions bit too confidently there.

i pushed the direct registration version again so ci can show the actual failure: 31be28b

idk yet why it ends up at the max_universe assert instead of just rewriting to false, so ltm the useful next step is to let ci capture the full logs on this exact shape.

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

Labels

S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler 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.

[ICE]: assumptions on binders: could not find the supertrait vtable slot

6 participants