Repository: rust
Issue: ICE with next-solver: ExistentialMismatch
Labels: I-ICE,A-trait-system,T-compiler,C-bug,S-has-mcve,S-bug-has-test,WG-trait-system-refactor

<!--
Thank you for finding an Internal Compiler Error! 🧊  If possible, try to provide
a minimal verifiable example. You can read "Rust Bug Minimization Patterns" for
how to create smaller examples.
http://blog.pnkfx.org/blog/2019/11/18/rust-bug-minimization-patterns/
-->

### Code

```Rust
trait Service {
    type S;
}

trait Framing {
    type F;
}

impl Framing for () {
    type F = ();
}

trait HttpService<F: Framing>: Service<S = F::F> {}

type BoxService = Box<dyn HttpService<(), S = ()>>;

fn build_server<F: FnOnce() -> BoxService>(_: F) {}

fn make_server<F: Framing>() -> Box<dyn HttpService<F, S = F::F>> {
    unimplemented!()
}

fn main() {
    build_server(|| make_server())
}

```


### Meta
<!--
If you're using the stable version of the compiler, you should also check if the
bug also exists in the beta or nightly versions.
-->

`rustc --version --verbose`:
```
rustc 1.84.0-nightly (3f1be1ec7 2024-10-28)
binary: rustc
commit-hash: 3f1be1ec7ec3d8e80beb381ee82164a0aa3ca777
commit-date: 2024-10-28
host: x86_64-unknown-linux-gnu
release: 1.84.0-nightly
LLVM version: 19.1.1
```

### Error output

```
no errors
```

<!--
Include a backtrace in the code block by setting `RUST_BACKTRACE=1` in your
environment. E.g. `RUST_BACKTRACE=1 cargo build`.
-->
<details><summary><strong>Backtrace</strong></summary>
<p>

```
thread 'rustc' panicked at /rustc/3f1be1ec7ec3d8e80beb381ee82164a0aa3ca777/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/canonical.rs:391:86:
called `Result::unwrap()` on an `Err` value: ExistentialMismatch(ExpectedFound { expected: [Binder { value: Trait(HttpService<()>), bound_vars: [] }, Binder { value: Projection(S = ()), bound_vars: [] }, Binder { value: Projection(S = _), bound_vars: [] }], found: [Binder { value: Trait(HttpService<()>), bound_vars: [] }, Binder { value: Projection(S = ()), bound_vars: [] }, Binder { value: Projection(S = ()), bound_vars: [] }] })
stack backtrace:
   0:     0x7f08e12a2a3a - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h7767b02c5430d02b
   1:     0x7f08e1a0444a - core::fmt::write::hd9cf23088539bf85
   2:     0x7f08e2ca0251 - std::io::Write::write_fmt::h516df85bf7181425
   3:     0x7f08e12a2892 - std::sys::backtrace::BacktraceLock::print::h5907c3622e037863
   4:     0x7f08e12a4d96 - std::panicking::default_hook::{{closure}}::h13cd352e0714d74b
   5:     0x7f08e12a4be0 - std::panicking::default_hook::ha087b22e6b135389
   6:     0x7f08e031d62f - std[6f01353fa805a722]::panicking::update_hook::<alloc[62edfd2f77ae8093]::boxed::Box<rustc_driver_impl[b57e977af7ed3191]::install_ice_hook::{closure#0}>>::{closure#0}
   7:     0x7f08e12a54a8 - std::panicking::rust_panic_with_hook::ha12d21b564771d78
   8:     0x7f08e12a527a - std::panicking::begin_panic_handler::{{closure}}::h29f91f01f78dfedc
   9:     0x7f08e12a2ee9 - std::sys::backtrace::__rust_end_short_backtrace::h1e39edc6648a642b
  10:     0x7f08e12a4f3c - rust_begin_unwind
  11:     0x7f08ddce8a50 - core::panicking::panic_fmt::hea12f2402e677eaa
  12:     0x7f08de07b6b6 - core::result::unwrap_failed::hb52ad530f4fe86dd
  13:     0x7f08e266f29e - <rustc_next_trait_solver[4bfa710c1e5e135a]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[d2c87e7718ceefbc]::solve::delegate::SolverDelegate, rustc_middle[a71cce3b55612100]::ty::context::TyCtxt>>::unify_query_var_values
  14:     0x7f08e26740b5 - <rustc_trait_selection[d2c87e7718ceefbc]::solve::inspect::analyse::InspectCandidate>::instantiate_nested_goals_and_opt_impl_args
  15:     0x7f08e29339e8 - <rustc_trait_selection[d2c87e7718ceefbc]::solve::fulfill::BestObligation as rustc_trait_selection[d2c87e7718ceefbc]::solve::inspect::analyse::ProofTreeVisitor>::visit_goal
  16:     0x7f08e29340fb - <rustc_trait_selection[d2c87e7718ceefbc]::solve::fulfill::BestObligation as rustc_trait_selection[d2c87e7718ceefbc]::solve::inspect::analyse::ProofTreeVisitor>::visit_goal
  17:     0x7f08e265c6dd - <rustc_infer[b005096d9ca2d9eb]::infer::InferCtxt as rustc_trait_selection[d2c87e7718ceefbc]::solve::inspect::analyse::ProofTreeInferCtxtExt>::visit_proof_tree_at_depth::<rustc_trait_selection[d2c87e7718ceefbc]::solve::fulfill::BestObligation>
  18:     0x7f08e265c506 - rustc_trait_selection[d2c87e7718ceefbc]::solve::fulfill::find_best_leaf_obligation
  19:     0x7f08e265a53e - <rustc_trait_selection[d2c87e7718ceefbc]::traits::FulfillmentError as rustc_infer[b005096d9ca2d9eb]::traits::engine::FromSolverError<rustc_trait_selection[d2c87e7718ceefbc]::solve::fulfill::NextSolverError>>::from_solver_error
  20:     0x7f08e06040b7 - <rustc_trait_selection[d2c87e7718ceefbc]::solve::fulfill::FulfillmentCtxt<rustc_trait_selection[d2c87e7718ceefbc]::traits::FulfillmentError> as rustc_infer[b005096d9ca2d9eb]::traits::engine::TraitEngine<rustc_trait_selection[d2c87e7718ceefbc]::traits::FulfillmentError>>::select_where_possible
  21:     0x7f08e1ce0137 - <rustc_hir_typeck[cbc9bfea74fd92f]::fn_ctxt::FnCtxt>::structurally_resolve_type
  22:     0x7f08e269e7b4 - <rustc_hir_typeck[cbc9bfea74fd92f]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  23:     0x7f08e2698e90 - <rustc_hir_typeck[cbc9bfea74fd92f]::fn_ctxt::FnCtxt>::check_block_with_expected
  24:     0x7f08e269f32e - <rustc_hir_typeck[cbc9bfea74fd92f]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  25:     0x7f08e1cf79d0 - rustc_hir_typeck[cbc9bfea74fd92f]::check::check_fn
  26:     0x7f08e1ced28d - rustc_hir_typeck[cbc9bfea74fd92f]::typeck
  27:     0x7f08e1cecb87 - rustc_query_impl[363319b8d14e6982]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[363319b8d14e6982]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[a71cce3b55612100]::query::erase::Erased<[u8; 8usize]>>
  28:     0x7f08e1d9e181 - rustc_query_system[4cfb2d0902ef8f12]::query::plumbing::try_execute_query::<rustc_query_impl[363319b8d14e6982]::DynamicConfig<rustc_query_system[4cfb2d0902ef8f12]::query::caches::VecCache<rustc_span[b0d64f4f8585b504]::def_id::LocalDefId, rustc_middle[a71cce3b55612100]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[363319b8d14e6982]::plumbing::QueryCtxt, false>
  29:     0x7f08e1d9c7d5 - rustc_query_impl[363319b8d14e6982]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  30:     0x7f08e1d9c45b - <rustc_middle[a71cce3b55612100]::hir::map::Map>::par_body_owners::<rustc_hir_analysis[bffcb7f74fda0573]::check_crate::{closure#4}>::{closure#0}
  31:     0x7f08e1d9a346 - rustc_hir_analysis[bffcb7f74fda0573]::check_crate
  32:     0x7f08e2347557 - rustc_interface[26b25201e591a79d]::passes::run_required_analyses
  33:     0x7f08e28eec1e - rustc_interface[26b25201e591a79d]::passes::analysis
  34:     0x7f08e28eebf1 - rustc_query_impl[363319b8d14e6982]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[363319b8d14e6982]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[a71cce3b55612100]::query::erase::Erased<[u8; 1usize]>>
  35:     0x7f08e292b1ee - rustc_query_system[4cfb2d0902ef8f12]::query::plumbing::try_execute_query::<rustc_query_impl[363319b8d14e6982]::DynamicConfig<rustc_query_system[4cfb2d0902ef8f12]::query::caches::SingleCache<rustc_middle[a71cce3b55612100]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[363319b8d14e6982]::plumbing::QueryCtxt, false>
  36:     0x7f08e292aecf - rustc_query_impl[363319b8d14e6982]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  37:     0x7f08e27f6273 - rustc_interface[26b25201e591a79d]::interface::run_compiler::<core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>, rustc_driver_impl[b57e977af7ed3191]::run_compiler::{closure#0}>::{closure#1}
  38:     0x7f08e2872394 - std[6f01353fa805a722]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[26b25201e591a79d]::util::run_in_thread_with_globals<rustc_interface[26b25201e591a79d]::util::run_in_thread_pool_with_globals<rustc_interface[26b25201e591a79d]::interface::run_compiler<core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>, rustc_driver_impl[b57e977af7ed3191]::run_compiler::{closure#0}>::{closure#1}, core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>>::{closure#0}, core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>>
  39:     0x7f08e28727cd - <<std[6f01353fa805a722]::thread::Builder>::spawn_unchecked_<rustc_interface[26b25201e591a79d]::util::run_in_thread_with_globals<rustc_interface[26b25201e591a79d]::util::run_in_thread_pool_with_globals<rustc_interface[26b25201e591a79d]::interface::run_compiler<core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>, rustc_driver_impl[b57e977af7ed3191]::run_compiler::{closure#0}>::{closure#1}, core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>>::{closure#0}, core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[97274f6297637c56]::result::Result<(), rustc_span[b0d64f4f8585b504]::ErrorGuaranteed>>::{closure#1} as core[97274f6297637c56]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  40:     0x7f08e287326b - std::sys::pal::unix::thread::Thread::new::thread_start::hbed294d48a38d6d6
  41:     0x7f08e401339d - <unknown>
  42:     0x7f08e409849c - <unknown>
  43:                0x0 - <unknown>

error: the compiler unexpectedly panicked. this is a bug.

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: please attach the file at `/tmp/im/rustc-ice-2024-10-29T20_27_37-1444394.txt` to your bug report

note: compiler flags: -Z next-solver=globally

query stack during panic:
#0 [typeck] type-checking `main`
#1 [analysis] running analysis passes on this crate
end of query stack
```

</p>
</details>