fix: replace errors in a type when doing autoderef

This commit is contained in:
Dawer 2021-09-29 00:26:58 +05:00
parent 11aed78e2b
commit f222665ebe

View File

@ -2504,9 +2504,8 @@ pub fn tuple_fields(&self, _db: &dyn HirDatabase) -> Vec<Type> {
pub fn autoderef<'a>(&'a self, db: &'a dyn HirDatabase) -> impl Iterator<Item = Type> + 'a { pub fn autoderef<'a>(&'a self, db: &'a dyn HirDatabase) -> impl Iterator<Item = Type> + 'a {
// There should be no inference vars in types passed here // There should be no inference vars in types passed here
// FIXME check that? let ty = hir_ty::replace_errors_with_variables(&self.ty).value;
let canonical = let canonical = Canonical { value: ty, binders: CanonicalVarKinds::empty(&Interner) };
Canonical { value: self.ty.clone(), binders: CanonicalVarKinds::empty(&Interner) };
let environment = self.env.env.clone(); let environment = self.env.env.clone();
let ty = InEnvironment { goal: canonical, environment }; let ty = InEnvironment { goal: canonical, environment };
autoderef(db, Some(self.krate), ty) autoderef(db, Some(self.krate), ty)
@ -2600,7 +2599,6 @@ fn iterate_method_candidates_dyn(
callback: &mut dyn FnMut(&Ty, AssocItemId) -> ControlFlow<()>, callback: &mut dyn FnMut(&Ty, AssocItemId) -> ControlFlow<()>,
) { ) {
// There should be no inference vars in types passed here // There should be no inference vars in types passed here
// FIXME check that?
let canonical = hir_ty::replace_errors_with_variables(&self.ty); let canonical = hir_ty::replace_errors_with_variables(&self.ty);
let env = self.env.clone(); let env = self.env.clone();