Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/solver.rs')
-rw-r--r--crates/hir-ty/src/next_solver/solver.rs22
1 files changed, 10 insertions, 12 deletions
diff --git a/crates/hir-ty/src/next_solver/solver.rs b/crates/hir-ty/src/next_solver/solver.rs
index 385149d784..c7591c0c77 100644
--- a/crates/hir-ty/src/next_solver/solver.rs
+++ b/crates/hir-ty/src/next_solver/solver.rs
@@ -10,6 +10,7 @@ use rustc_type_ir::{
};
use crate::next_solver::mapping::NextSolverToChalk;
+use crate::next_solver::{CanonicalVarKind, ImplIdWrapper};
use crate::{
TraitRefExt,
db::HirDatabase,
@@ -117,13 +118,14 @@ impl<'db> SolverDelegate for SolverContext<'db> {
canonical.instantiate(self.cx(), &values)
}
- fn instantiate_canonical_var_with_infer(
+ fn instantiate_canonical_var(
&self,
- cv_info: rustc_type_ir::CanonicalVarKind<Self::Interner>,
- _span: <Self::Interner as rustc_type_ir::Interner>::Span,
+ kind: CanonicalVarKind<'db>,
+ span: <Self::Interner as Interner>::Span,
+ var_values: &[GenericArg<'db>],
universe_map: impl Fn(rustc_type_ir::UniverseIndex) -> rustc_type_ir::UniverseIndex,
- ) -> <Self::Interner as rustc_type_ir::Interner>::GenericArg {
- self.0.instantiate_canonical_var(cv_info, universe_map)
+ ) -> GenericArg<'db> {
+ self.0.instantiate_canonical_var(kind, var_values, universe_map)
}
fn add_item_bounds_for_hidden_type(
@@ -146,12 +148,8 @@ impl<'db> SolverDelegate for SolverContext<'db> {
&self,
goal_trait_ref: rustc_type_ir::TraitRef<Self::Interner>,
trait_assoc_def_id: <Self::Interner as rustc_type_ir::Interner>::DefId,
- impl_def_id: <Self::Interner as rustc_type_ir::Interner>::DefId,
+ impl_id: ImplIdWrapper,
) -> Result<Option<<Self::Interner as rustc_type_ir::Interner>::DefId>, ErrorGuaranteed> {
- let impl_id = match impl_def_id {
- SolverDefId::ImplId(id) => id,
- _ => panic!("Unexpected SolverDefId"),
- };
let trait_assoc_id = match trait_assoc_def_id {
SolverDefId::TypeAliasId(id) => id,
_ => panic!("Unexpected SolverDefId"),
@@ -160,7 +158,7 @@ impl<'db> SolverDelegate for SolverContext<'db> {
.0
.interner
.db()
- .impl_trait(impl_id)
+ .impl_trait(impl_id.0)
// ImplIds for impls where the trait ref can't be resolved should never reach solver
.expect("invalid impl passed to next-solver")
.into_value_and_skipped_binders()
@@ -168,7 +166,7 @@ impl<'db> SolverDelegate for SolverContext<'db> {
let trait_ = trait_ref.hir_trait_id();
let trait_data = trait_.trait_items(self.0.interner.db());
let id =
- impl_id.impl_items(self.0.interner.db()).items.iter().find_map(|item| -> Option<_> {
+ impl_id.0.impl_items(self.0.interner.db()).items.iter().find_map(|item| -> Option<_> {
match item {
(_, AssocItemId::TypeAliasId(type_alias)) => {
let name = &self.0.interner.db().type_alias_signature(*type_alias).name;