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