Skip to content

Conversation

@lnicola
Copy link
Member

@lnicola lnicola commented Sep 1, 2025

Subtree update of rust-analyzer to rust-lang/rust-analyzer@21614ed.

Created using https://github.com/rust-lang/josh-sync.

r? @ghost

A4-Tacks and others added 30 commits August 4, 2025 01:59
Example
===
```rust
let x = $0;
```

Old completions:

```rust
let x = if $1 {
    $0
};
```

This PR current completions:

```rust
let x = if $1 {
    $2
} else {
    $0
};
```
…-macro

fix: Correctly goto `From` impl when on `into()` even when the call is inside a macro
…perms

chore: fix crates/ide/src/folding_ranges.rs file perms
This caused rename to remove both, because it couldn't rename the derive-expanded one.

I spent some time trying to create a test for this, before giving up. But I checked manually that this works.
Slim down compile time artifact progress reports
remove `add_attr()` from edit_in_place.rs because it use `ted`.
…lace_named_generic_with_impl

remove `ted` from replace_named_generic_with_impl.rs
…_import

Migrate `expand_glob_import` assist to use `SyntaxEditor`
Add assignment type analysis for ide-completion
fix external docs for exported macros
fix: Do not remove the original token when descending into derives
Remove only contain literals dbg statement

```rust
fn foo() {
    let n = 2;
    $0dbg!(3);
    dbg!(2.6);
    dbg!(1, 2.5);
    dbg!('x');
    dbg!(&n);
    dbg!(n);
    // needless comment
    dbg!("foo");$0
}
```
->
```rust
fn foo() {
    // needless comment
}
```
Old:
```rust
fn foo() {
    3;
    2.6;
    (1, 2.5);
    'x';
    &n;
    n;
    // needless comment
    "foo";
}
```
…e-dbg

Add remove literal dbg stmt for remove_dbg
…lxvvyy

Report the incorrect payload when failing to deserialize lsp messages
…wpkmxw

Fix non-lsp compliant `Response` definition
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](raszi/node-tmp@v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
…ast_instead_of_str

In handlers/extract_module.rs, generate ast::Module instead of String
ShoyuVanilla and others added 21 commits August 26, 2025 05:48
feat: Add an option to remove reborrows from adjustment inlay hints
…m-indent

Fix indent for move_guard_to_arm_body
…colon

Fix ExprStmt delete semicolon for toggle_macro_delimiter
Replace it with normal `SolverDefId::TypeAliasId`.

The split caused a very funny bug where code was getting `TypeAliasId` where it expected `ForeignId`, because `TypeAliasId` had a `From` impl from `hir_def::TypeAliasId` and `ForeignId` had not, plus a careless `into()`.

I could've fixed this specific bug but opted to remove the split instead; currently, it just provides more room for bugs, as we don't have typed IDs for the solver anyway, and even when we'll have (hopefully), that doesn't seem like a very useful distinction, for example in hir-def foreign types are just `TypeAliasId` with some flags.

Constructing a test for this isn't trivial; the trivial test (creating a foreign type, even proving a trait bound for it) fails to fail before the change, probably because we don't use the new solver everywhere yet so we don't trigger this specific code path.
…lver

perf: Cache trait solving across queries in the same revision
…ated-unsafe-scope

fix: In highlight_related, when on an unsafe block, don't highlight unsafe operations of other unsafe blocks
…attach

fix: Attach the db in one more place in highlighting
Namely, mir lowering, const eval and IDE things.
minor: Don't require a full `InferenceTable` for `CastTy`
…0) to auto traits' substitutions

Chalk represents dyn types as a list of predicate, the self type should be there. The next solver represents them quite differently. The `Self` was forgotten for the auto trait case.
…s-improve

fix: Add progress bars to more places in analysis-stats
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.19 to 0.3.20.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](tokio-rs/tracing@tracing-subscriber-0.3.19...tracing-subscriber-0.3.20)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-version: 0.3.20
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
…acing-subscriber-0.3.20

Bump tracing-subscriber from 0.3.19 to 0.3.20
…-dyn-auto-trait

fix: When mapping next-solver's `dyn` type, add `Self` (aka. bound var ^1.0) to auto traits' substitutions
…get-option

fix: Avoid `--target` option being given twice to `rustc` when invoked through `cargo rustc` while fetching target data layout
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. labels Sep 1, 2025
@rustbot
Copy link
Collaborator

rustbot commented Sep 1, 2025

rust-analyzer is developed in its own repository. If possible, consider making this change to rust-lang/rust-analyzer instead.

cc @rust-lang/rust-analyzer

@rust-log-analyzer
Copy link
Collaborator

The job pr-check-2 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
    Checking toml v0.8.23
[RUSTC-TIMING] hashbrown test:false 0.545
    Checking inotify v0.11.0
[RUSTC-TIMING] icu_normalizer test:false 0.467
error[E0277]: the trait bound `rustc_type_ir::BoundVar: BoundVarLike<next_solver::interner::DbInterner<'db>>` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/consts.rs:341:18
    |
341 |     type Bound = rustc_type_ir::BoundVar;
    |                  ^^^^^^^^^^^^^^^^^^^^^^^ the trait `BoundVarLike<next_solver::interner::DbInterner<'db>>` is not implemented for `rustc_type_ir::BoundVar`
    |
    = help: the following other types implement trait `BoundVarLike<I>`:
              `region::BoundRegion` implements `BoundVarLike<next_solver::interner::DbInterner<'db>>`
              `rustc_middle::ty::BoundConst` implements `BoundVarLike<rustc_middle::ty::context::TyCtxt<'tcx>>`
              `rustc_middle::ty::region::BoundRegion` implements `BoundVarLike<rustc_middle::ty::context::TyCtxt<'tcx>>`
              `rustc_middle::ty::sty::BoundTy` implements `BoundVarLike<rustc_middle::ty::context::TyCtxt<'tcx>>`
              `ty::BoundTy` implements `BoundVarLike<next_solver::interner::DbInterner<'db>>`
note: required by a bound in `rustc_type_ir::inherent::PlaceholderLike::Bound`
   --> /checkout/compiler/rustc_type_ir/src/inherent.rs:540:17
    |
540 |     type Bound: BoundVarLike<I>;
    |                 ^^^^^^^^^^^^^^^ required by this bound in `PlaceholderLike::Bound`

[RUSTC-TIMING] toml test:false 0.354
    Checking cargo-util-schemas v0.8.2
[RUSTC-TIMING] inotify test:false 0.222
error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:30:25
    |
 30 |     IntUnificationTable(sv::UndoLog<ut::Delegate<IntVid>>),
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:31:27
    |
 31 |     FloatUnificationTable(sv::UndoLog<ut::Delegate<FloatVid>>),
    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<FloatVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:41:13
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
 41 | |             fn from(x: $ty) -> Self {
    | |             ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:40:19
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
    | |                   ^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:41:13
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
 41 | |             fn from(x: $ty) -> Self {
    | |             ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<FloatVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:40:19
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
    | |                   ^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<FloatVid>` to implement `SnapshotVecDelegate`
note: required by a bound in `ena::snapshot_vec::UndoLog`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:32:21
    |
 32 | pub enum UndoLog<D: SnapshotVecDelegate> {
    |                     ^^^^^^^^^^^^^^^^^^^ required by this bound in `UndoLog`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/mod.rs:100:41
    |
100 |     pub(crate) int_unification_storage: ut::UnificationTableStorage<IntVid>,
    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/mod.rs:103:43
    |
103 |     pub(crate) float_unification_storage: ut::UnificationTableStorage<FloatVid>,
    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0277]: the trait bound `rustc_type_ir::BoundVar: BoundVarLike<next_solver::interner::DbInterner<'db>>` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/interner.rs:926:23
    |
926 |     type BoundConst = rustc_type_ir::BoundVar;
    |                       ^^^^^^^^^^^^^^^^^^^^^^^ the trait `BoundVarLike<next_solver::interner::DbInterner<'db>>` is not implemented for `rustc_type_ir::BoundVar`
    |
    = help: the following other types implement trait `BoundVarLike<I>`:
              `region::BoundRegion` implements `BoundVarLike<next_solver::interner::DbInterner<'db>>`
              `rustc_middle::ty::BoundConst` implements `BoundVarLike<rustc_middle::ty::context::TyCtxt<'tcx>>`
              `rustc_middle::ty::region::BoundRegion` implements `BoundVarLike<rustc_middle::ty::context::TyCtxt<'tcx>>`
              `rustc_middle::ty::sty::BoundTy` implements `BoundVarLike<rustc_middle::ty::context::TyCtxt<'tcx>>`
              `ty::BoundTy` implements `BoundVarLike<next_solver::interner::DbInterner<'db>>`
note: required by a bound in `rustc_type_ir::Interner::BoundConst`
   --> /checkout/compiler/rustc_type_ir/src/interner.rs:143:22
    |
143 |     type BoundConst: BoundVarLike<Self>;
    |                      ^^^^^^^^^^^^^^^^^^ required by this bound in `Interner::BoundConst`

error[E0046]: not all trait items implemented, missing: `TraitId`, `require_trait_lang_item`, `is_trait_lang_item`, `as_trait_lang_item`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/interner.rs:861:1
    |
861 | impl<'db> rustc_type_ir::Interner for DbInterner<'db> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `TraitId`, `require_trait_lang_item`, `is_trait_lang_item`, `as_trait_lang_item` in implementation
    |
    = help: implement the missing item: `type TraitId = /* Type */;`
    = help: implement the missing item: `fn require_trait_lang_item(self, _: SolverTraitLangItem) -> <Self as rustc_type_ir::Interner>::TraitId { todo!() }`
    = help: implement the missing item: `fn is_trait_lang_item(self, _: <Self as rustc_type_ir::Interner>::TraitId, _: SolverTraitLangItem) -> bool { todo!() }`
    = help: implement the missing item: `fn as_trait_lang_item(self, _: <Self as rustc_type_ir::Interner>::TraitId) -> std::option::Option<SolverTraitLangItem> { todo!() }`

error[E0046]: not all trait items implemented, missing: `new_coroutine_witness_for_coroutine`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/ty.rs:530:1
    |
530 | impl<'db> rustc_type_ir::inherent::Ty<DbInterner<'db>> for Ty<'db> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `new_coroutine_witness_for_coroutine` in implementation
    |
    = help: implement the missing item: `fn new_coroutine_witness_for_coroutine(_: next_solver::interner::DbInterner<'db>, _: <next_solver::interner::DbInterner<'db> as rustc_type_ir::Interner>::DefId, _: <next_solver::interner::DbInterner<'db> as rustc_type_ir::Interner>::GenericArgs) -> Self { todo!() }`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:54:25
    |
 54 |     IntUnificationTable(sv::UndoLog<ut::Delegate<IntVid>>),
    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
---
    Checking filetime v0.2.25
error[E0027]: pattern does not mention field `goal`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/fulfill.rs:170:21
    |
170 |                 let GoalEvaluation { certainty, has_changed, stalled_on } = match result {
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `goal`
    |
help: include the missing field in the pattern
    |
170 |                 let GoalEvaluation { certainty, has_changed, stalled_on, goal } = match result {
    |                                                                        ++++++
help: if you don't care about this missing field, you can explicitly ignore it
    |
170 |                 let GoalEvaluation { certainty, has_changed, stalled_on, goal: _ } = match result {
    |                                                                        +++++++++
help: or always ignore missing fields here
    |
170 |                 let GoalEvaluation { certainty, has_changed, stalled_on, .. } = match result {
    |                                                                        ++++

error[E0560]: struct `CoroutineClosureArgsParts<next_solver::interner::DbInterner<'db>>` has no field named `coroutine_witness_ty`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/generic_arg.rs:386:17
    |
386 |                 coroutine_witness_ty: coroutine_witness_ty.expect_ty(),
    |                 ^^^^^^^^^^^^^^^^^^^^ `CoroutineClosureArgsParts<_>` does not have this field
    |
    = note: all struct fields are already assigned

error[E0560]: struct `CoroutineArgsParts<next_solver::interner::DbInterner<'db>>` has no field named `witness`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/generic_arg.rs:402:21
    |
402 |                     witness: Ty::new_unit(interner),
    |                     ^^^^^^^ `CoroutineArgsParts<_>` does not have this field
    |
    = note: all struct fields are already assigned

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:105:39
    |
105 | ...                   inner.int_unification_table().probe_value(vid),
    |                             ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

[RUSTC-TIMING] filetime test:false 0.097
    Checking notify-types v2.0.0
error[E0599]: the method `probe_value` exists for struct `UnificationTable<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:105:63
    |
105 |   ...                   inner.int_unification_table().probe_value(vid),
    |                                                       ^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = IntVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- doesn't satisfy `IntVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `IntVid: ena::unify::UnifyKey`
            `IntVid: ena::unify::UnifyKey`
            which is required by `<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = IntVid`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:107:46
    |
107 | ...                   if inner.int_unification_table().find(vid) == vid
    |                                ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `find` exists for struct `UnificationTable<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:107:70
    |
107 |   ...                   if inner.int_unification_table().find(vid) == vid
    |                                                          ^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = IntVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- doesn't satisfy `IntVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `IntVid: ena::unify::UnifyKey`
            `IntVid: ena::unify::UnifyKey`
            which is required by `<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = IntVid`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:113:39
    |
113 | ...                   inner.float_unification_table().probe_value(vid),
    |                             ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `probe_value` exists for struct `UnificationTable<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:113:65
    |
113 |   ...                   inner.float_unification_table().probe_value(vid),
    |                                                         ^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = FloatVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- doesn't satisfy `FloatVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `FloatVid: ena::unify::UnifyKey`
            `FloatVid: ena::unify::UnifyKey`
            which is required by `<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = FloatVid`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:115:46
    |
115 | ...                   if inner.float_unification_table().find(vid) == vid
    |                                ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

[RUSTC-TIMING] notify_types test:false 0.110
   Compiling pulldown-cmark v0.9.6
error[E0599]: the method `find` exists for struct `UnificationTable<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:115:72
    |
115 |   ...                   if inner.float_unification_table().find(vid) == vid
    |                                                            ^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = FloatVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- doesn't satisfy `FloatVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `FloatVid: ena::unify::UnifyKey`
            `FloatVid: ena::unify::UnifyKey`
            which is required by `<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = FloatVid`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:177:33
    |
177 |         self.inner.borrow_mut().int_unification_table().union(a, b);
    |                                 ^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `union` exists for struct `UnificationTable<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:177:57
    |
177 |           self.inner.borrow_mut().int_unification_table().union(a, b);
    |                                                           ^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = IntVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- doesn't satisfy `IntVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `IntVid: ena::unify::UnifyKey`
            `IntVid: ena::unify::UnifyKey`
            which is required by `<InPlace<IntVid, &mut Vec<VarValue<IntVid>>, &mut InferCtxtUndoLogs<'_>> as UnificationStoreBase>::Key = IntVid`

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:181:33
    |
181 |         self.inner.borrow_mut().float_unification_table().union(a, b);
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `InPlace`
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:57:8
    |
 56 | pub struct InPlace<
    |            ------- required by a bound in this struct
 57 |     K: UnifyKey,
    |        ^^^^^^^^ required by this bound in `InPlace`

error[E0599]: the method `union` exists for struct `UnificationTable<InPlace<FloatVid, &mut Vec<VarValue<FloatVid>>, ...>>`, but its trait bounds were not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/context.rs:181:59
    |
181 |           self.inner.borrow_mut().float_unification_table().union(a, b);
    |                                                             ^^^^^ method cannot be called due to unsatisfied trait bounds
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/backing_vec.rs:56:1
    |
 56 | / pub struct InPlace<
 57 | |     K: UnifyKey,
 58 | |     V: sv::VecLike<Delegate<K>> = Vec<VarValue<K>>,
 59 | |     L = VecLog<sv::UndoLog<Delegate<K>>>,
 60 | | > {
    | |_- doesn't satisfy `<_ as UnificationStoreBase>::Key = FloatVid`
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- doesn't satisfy `FloatVid: ena::unify::UnifyKey`
    |
    = note: the following trait bounds were not satisfied:
            `FloatVid: ena::unify::UnifyKey`
            `FloatVid: ena::unify::UnifyKey`
---
    |
183 |             Ok(PlaceholderReplacer::replace_placeholders(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:185:17
    |
185 |                 mapped_regions,
    |                 ^^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<BoundTy>, ..., ...>`, found a different `IndexMap<Placeholder<BoundTy>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:186:17
    |
186 |                 mapped_types,
    |                 ^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:187:17
    |
187 |                 mapped_consts,
    |                 ^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
---
    = help: you can use `cargo tree` to explore your dependency tree
note: associated function defined here
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/util.rs:861:12
    |
861 |     pub fn replace_placeholders<T: TypeFoldable<DbInterner<'db>>>(
    |            ^^^^^^^^^^^^^^^^^^^^
862 |         infcx: &'a InferCtxt<'db>,
863 |         mapped_regions: FxIndexMap<PlaceholderRegion, BoundRegion>,
    |         ----------------------------------------------------------
864 |         mapped_types: FxIndexMap<Placeholder<BoundTy>, BoundTy>,
    |         -------------------------------------------------------
865 |         mapped_consts: FxIndexMap<PlaceholderConst, BoundVar>,
    |         -----------------------------------------------------

error[E0308]: arguments to this function are incorrect
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:210:16
    |
210 |             Ok(PlaceholderReplacer::replace_placeholders(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:212:17
    |
212 |                 mapped_regions,
    |                 ^^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<BoundTy>, ..., ...>`, found a different `IndexMap<Placeholder<BoundTy>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:213:17
    |
213 |                 mapped_types,
    |                 ^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:7:1
    |
  7 | extern crate rustc_index;
    | ------------------------- one version of crate `indexmap` used here, as a dependency of crate `rustc_serialize`
    = help: you can use `cargo tree` to explore your dependency tree
note: expected `IndexMap<Placeholder<...>, ..., ...>`, found a different `IndexMap<Placeholder<...>, ..., ...>`
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/project/solve_normalize.rs:214:17
    |
214 |                 mapped_consts,
    |                 ^^^^^^^^^^^^^
note: two different versions of crate `indexmap` are being used; two types coming from two different versions of the same crate are different types even if they look the same
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.9.0/src/map.rs:87:1
    |
 87 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `IndexMap`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/indexmap-2.10.0/src/map.rs:88:1
    |
 88 | pub struct IndexMap<K, V, S = RandomState> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the found type `indexmap::map::IndexMap`
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer.rs:50:5
    |
 50 | use indexmap::IndexSet;
    |     -------- one version of crate `indexmap` used here, as a direct dependency of the current crate
---
    = help: you can use `cargo tree` to explore your dependency tree
note: associated function defined here
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/util.rs:861:12
    |
861 |     pub fn replace_placeholders<T: TypeFoldable<DbInterner<'db>>>(
    |            ^^^^^^^^^^^^^^^^^^^^
862 |         infcx: &'a InferCtxt<'db>,
863 |         mapped_regions: FxIndexMap<PlaceholderRegion, BoundRegion>,
    |         ----------------------------------------------------------
864 |         mapped_types: FxIndexMap<Placeholder<BoundTy>, BoundTy>,
    |         -------------------------------------------------------
865 |         mapped_consts: FxIndexMap<PlaceholderConst, BoundVar>,
    |         -----------------------------------------------------

[RUSTC-TIMING] serde_spanned test:false 0.067
error[E0063]: missing field `stable_hash` in initializer of `WithCachedTypeInfo<_>`
  --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/ty.rs:49:22
---
[RUSTC-TIMING] ordered_float test:false 0.226
[RUSTC-TIMING] winnow test:false 1.739
[RUSTC-TIMING] erased_serde test:false 0.510
    Checking project-model v0.0.0 (/checkout/src/tools/rust-analyzer/crates/project-model)
error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:72:27
    |
 72 |     pub fn fork(&self) -> Self {
    |                           ^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:76:20
    |
 76 |             inner: self.inner.clone(),
    |                    ^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:85:86
    |
 85 |     pub fn fork_with_typing_mode(&self, typing_mode: TypingMode<DbInterner<'db>>) -> Self {
    |                                                                                      ^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `FloatVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/at.rs:92:20
    |
 92 |             inner: self.inner.clone(),
    |                    ^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `FloatVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:573:1
    |
573 | / rustc_index::newtype_index! {
574 | |     /// A **float**ing-point (`f32` or `f64`) type **v**ariable **ID**.
575 | |     #[encodable]
576 | |     #[orderable]
577 | |     #[debug_format = "?{}f"]
578 | |     #[gate_rustc_only]
579 | |     pub struct FloatVid {}
    | |_______________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/opaque_types/table.rs:154:32
    |
154 |             self.undo_log.push(UndoLog::OpaqueTypes(key, Some(prev)));
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/opaque_types/table.rs:158:28
    |
158 |         self.undo_log.push(UndoLog::OpaqueTypes(key, None));
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/opaque_types/table.rs:164:28
    |
164 |         self.undo_log.push(UndoLog::DuplicateOpaqueType);
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:41:32
    |
 37 | / macro_rules! impl_from {
 38 | |     ($($ctor:ident ($ty:ty),)*) => {
 39 | |         $(
 40 | |         impl<'db> From<$ty> for UndoLog<'db> {
 41 | |             fn from(x: $ty) -> Self {
    | |                                ^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
...   |
 47 | | }
    | |_- in this expansion of `impl_from!`
...
 50 | / impl_from! {
 51 | |     RegionConstraintCollector(region_constraints::UndoLog<'db>),
 52 | |
 53 | |     TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'db>>>),
...   |
 59 | |     RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
 60 | | }
    | |_- in this macro invocation
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:87:10
    |
 87 | #[derive(Clone, Default)]
    |          ^^^^^
    |          |
    |          the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |          in this derive macro expansion
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/clone.rs:225:1
    |
    = note: in this expansion of `#[derive(Clone)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:89:5
    |
 87 | #[derive(Clone, Default)]
    |          ----- in this derive macro expansion
 88 | pub(crate) struct InferCtxtUndoLogs<'db> {
 89 |     logs: Vec<UndoLog<'db>>,
    |     ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/clone.rs:225:1
    |
    = note: in this expansion of `#[derive(Clone)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:87:17
    |
 87 | #[derive(Clone, Default)]
    |                 ^^^^^^^
    |                 |
    |                 the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
    |                 in this derive macro expansion
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/default.rs:147:1
    |
    = note: in this expansion of `#[derive(Default)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;
    |   ----------------------- one version of crate `ena` used here, as a dependency of crate `rustc_data_structures`
    |
   ::: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/snapshot_vec.rs:67:1
    |
 67 |   pub trait VecLike<D>: AsRef<[D::Value]> + AsMut<[D::Value]> + Rollback<UndoLog<D>>
    |   ---------------------------------------------------------------------------------- this is the found trait
    |
   ::: /checkout/compiler/rustc_type_ir/src/ty_kind.rs:564:1
    |
564 | / rustc_index::newtype_index! {
565 | |     /// An **int**egral (`u32`, `i32`, `usize`, etc.) type **v**ariable **ID**.
566 | |     #[encodable]
567 | |     #[orderable]
568 | |     #[debug_format = "?{}i"]
569 | |     #[gate_rustc_only]
570 | |     pub struct IntVid {}
    | |_____________________- this type doesn't implement the required trait
    = help: you can use `cargo tree` to explore your dependency tree
    = note: required for `ena::unify::Delegate<IntVid>` to implement `SnapshotVecDelegate`

error[E0277]: the trait bound `IntVid: ena::unify::UnifyKey` is not satisfied
   --> src/tools/rust-analyzer/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs:89:5
    |
 87 | #[derive(Clone, Default)]
    |                 ------- in this derive macro expansion
 88 | pub(crate) struct InferCtxtUndoLogs<'db> {
 89 |     logs: Vec<UndoLog<'db>>,
    |     ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ena::unify::UnifyKey` is not implemented for `IntVid`
   --> /rustc/788da80fcfcef3f34c90def5baa32813e39a1a41/library/core/src/default.rs:147:1
    |
    = note: in this expansion of `#[derive(Default)]`
    |
note: there are multiple different versions of crate `ena` in the dependency graph
   --> /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ena-0.14.3/src/unify/mod.rs:63:1
    |
 63 |   pub trait UnifyKey: Copy + Clone + Debug + PartialEq {
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/infer/unify.rs:11:5
    |
 11 |   use ena::unify::UnifyKey;
    |       --- one version of crate `ena` used here, as a direct dependency of the current crate
    |
   ::: src/tools/rust-analyzer/crates/hir-ty/src/lib.rs:13:1
    |
 13 |   extern crate rustc_abi;

@ChayimFriedman2
Copy link
Contributor

There are some changes on the solver crates from what r-a currently uses, I think it'll be easier to update r-a first to use the newest solver crates (are they published?) I can take care of that, if they are published.

@lnicola lnicola closed this Sep 5, 2025
@lnicola lnicola deleted the sync-from-ra branch September 5, 2025 11:45
@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Sep 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.