mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-02 12:59:12 +00:00
Remove lower::value_ty in favor of lower_nextsolver::value_ty
This commit is contained in:
parent
3089d23710
commit
73a401301d
8 changed files with 61 additions and 134 deletions
|
|
@ -4872,6 +4872,7 @@ impl<'db> Type<'db> {
|
|||
let Some(ty) = db.value_ty(def.into()) else {
|
||||
return Type::new(db, def, TyKind::Error.intern(Interner));
|
||||
};
|
||||
let interner = DbInterner::new_with(db, None, None);
|
||||
let substs = TyBuilder::unknown_subst(
|
||||
db,
|
||||
match def.into() {
|
||||
|
|
@ -4882,10 +4883,13 @@ impl<'db> Type<'db> {
|
|||
ValueTyDefId::EnumVariantId(it) => {
|
||||
GenericDefId::AdtId(AdtId::EnumId(it.lookup(db).parent))
|
||||
}
|
||||
ValueTyDefId::StaticId(_) => return Type::new(db, def, ty.skip_binders().clone()),
|
||||
ValueTyDefId::StaticId(_) => {
|
||||
return Type::new(db, def, ty.skip_binder().to_chalk(interner));
|
||||
}
|
||||
},
|
||||
);
|
||||
Type::new(db, def, ty.substitute(Interner, &substs))
|
||||
let args: crate::next_solver::GenericArgs<'_> = substs.to_nextsolver(interner);
|
||||
Type::new(db, def, ty.instantiate(interner, args).to_chalk(interner))
|
||||
}
|
||||
|
||||
pub fn new_slice(ty: Self) -> Self {
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@ use hir_ty::{
|
|||
from_assoc_type_id,
|
||||
lang_items::lang_items_for_bin_op,
|
||||
method_resolution,
|
||||
next_solver::{
|
||||
DbInterner,
|
||||
mapping::{ChalkToNextSolver, NextSolverToChalk},
|
||||
},
|
||||
};
|
||||
use intern::sym;
|
||||
use itertools::Itertools;
|
||||
|
|
@ -372,8 +376,10 @@ impl<'db> SourceAnalyzer<'db> {
|
|||
) -> Option<Callable<'db>> {
|
||||
let expr_id = self.expr_id(call.clone().into())?.as_expr()?;
|
||||
let (func, substs) = self.infer()?.method_resolution(expr_id)?;
|
||||
let ty = db.value_ty(func.into())?.substitute(Interner, &substs);
|
||||
let ty = Type::new_with_resolver(db, &self.resolver, ty);
|
||||
let interner = DbInterner::new_with(db, None, None);
|
||||
let args: hir_ty::next_solver::GenericArgs<'_> = substs.to_nextsolver(interner);
|
||||
let ty = db.value_ty(func.into())?.instantiate(interner, args);
|
||||
let ty = Type::new_with_resolver(db, &self.resolver, ty.to_chalk(interner));
|
||||
let mut res = ty.as_callable(db)?;
|
||||
res.is_bound_method = true;
|
||||
Some(res)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue