Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_ty/src/lib.rs')
| -rw-r--r-- | crates/hir_ty/src/lib.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/crates/hir_ty/src/lib.rs b/crates/hir_ty/src/lib.rs index f59e109c85..320b170ee4 100644 --- a/crates/hir_ty/src/lib.rs +++ b/crates/hir_ty/src/lib.rs @@ -35,7 +35,7 @@ use std::sync::Arc; use chalk_ir::{ fold::{Fold, Shift}, interner::HasInterner, - UintTy, + NoSolution, UintTy, }; use hir_def::{ expr::ExprId, @@ -228,11 +228,11 @@ impl CallableSig { impl Fold<Interner> for CallableSig { type Result = CallableSig; - fn fold_with<'i>( + fn fold_with<'i, E>( self, - folder: &mut dyn chalk_ir::fold::Folder<'i, Interner>, + folder: &mut dyn chalk_ir::fold::Folder<'i, Interner, Error = E>, outer_binder: DebruijnIndex, - ) -> chalk_ir::Fallible<Self::Result> + ) -> Result<Self::Result, E> where Interner: 'i, { @@ -282,7 +282,9 @@ pub(crate) fn fold_free_vars<T: HasInterner<Interner = Interner> + Fold<Interner use chalk_ir::{fold::Folder, Fallible}; struct FreeVarFolder<F>(F); impl<'i, F: FnMut(BoundVar, DebruijnIndex) -> Ty + 'i> Folder<'i, Interner> for FreeVarFolder<F> { - fn as_dyn(&mut self) -> &mut dyn Folder<'i, Interner> { + type Error = NoSolution; + + fn as_dyn(&mut self) -> &mut dyn Folder<'i, Interner, Error = Self::Error> { self } @@ -312,7 +314,9 @@ pub(crate) fn fold_tys<T: HasInterner<Interner = Interner> + Fold<Interner>>( }; struct TyFolder<F>(F); impl<'i, F: FnMut(Ty, DebruijnIndex) -> Ty + 'i> Folder<'i, Interner> for TyFolder<F> { - fn as_dyn(&mut self) -> &mut dyn Folder<'i, Interner> { + type Error = NoSolution; + + fn as_dyn(&mut self) -> &mut dyn Folder<'i, Interner, Error = Self::Error> { self } @@ -338,13 +342,15 @@ where { use chalk_ir::{ fold::{Folder, SuperFold}, - Fallible, NoSolution, + Fallible, }; struct ErrorReplacer { vars: usize, } impl<'i> Folder<'i, Interner> for ErrorReplacer { - fn as_dyn(&mut self) -> &mut dyn Folder<'i, Interner> { + type Error = NoSolution; + + fn as_dyn(&mut self) -> &mut dyn Folder<'i, Interner, Error = Self::Error> { self } |