diff options
Diffstat (limited to 'vendor/chalk-ir-0.80.0/src/visit/visitors.rs')
-rw-r--r-- | vendor/chalk-ir-0.80.0/src/visit/visitors.rs | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/vendor/chalk-ir-0.80.0/src/visit/visitors.rs b/vendor/chalk-ir-0.80.0/src/visit/visitors.rs deleted file mode 100644 index 486b51d86..000000000 --- a/vendor/chalk-ir-0.80.0/src/visit/visitors.rs +++ /dev/null @@ -1,41 +0,0 @@ -//! Visitor helpers - -use crate::{BoundVar, ControlFlow, DebruijnIndex, Interner, Visit, Visitor}; - -/// Visitor extensions. -pub trait VisitExt<I: Interner>: Visit<I> { - /// Check whether there are free (non-bound) variables. - fn has_free_vars(&self, interner: I) -> bool { - let flow = self.visit_with( - &mut FindFreeVarsVisitor { interner }, - DebruijnIndex::INNERMOST, - ); - matches!(flow, ControlFlow::Break(_)) - } -} - -impl<T, I: Interner> VisitExt<I> for T where T: Visit<I> {} - -struct FindFreeVarsVisitor<I: Interner> { - interner: I, -} - -impl<I: Interner> Visitor<I> for FindFreeVarsVisitor<I> { - type BreakTy = (); - - fn as_dyn(&mut self) -> &mut dyn Visitor<I, BreakTy = Self::BreakTy> { - self - } - - fn interner(&self) -> I { - self.interner - } - - fn visit_free_var( - &mut self, - _bound_var: BoundVar, - _outer_binder: DebruijnIndex, - ) -> ControlFlow<()> { - ControlFlow::Break(()) - } -} |