diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:32 +0000 |
commit | 4547b622d8d29df964fa2914213088b148c498fc (patch) | |
tree | 9fc6b25f3c3add6b745be9a2400a6e96140046e9 /vendor/chalk-ir-0.80.0/src/visit | |
parent | Releasing progress-linux version 1.66.0+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-4547b622d8d29df964fa2914213088b148c498fc.tar.xz rustc-4547b622d8d29df964fa2914213088b148c498fc.zip |
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/chalk-ir-0.80.0/src/visit')
-rw-r--r-- | vendor/chalk-ir-0.80.0/src/visit/binder_impls.rs | 45 | ||||
-rw-r--r-- | vendor/chalk-ir-0.80.0/src/visit/boring_impls.rs | 261 | ||||
-rw-r--r-- | vendor/chalk-ir-0.80.0/src/visit/visitors.rs | 41 |
3 files changed, 0 insertions, 347 deletions
diff --git a/vendor/chalk-ir-0.80.0/src/visit/binder_impls.rs b/vendor/chalk-ir-0.80.0/src/visit/binder_impls.rs deleted file mode 100644 index 074450a53..000000000 --- a/vendor/chalk-ir-0.80.0/src/visit/binder_impls.rs +++ /dev/null @@ -1,45 +0,0 @@ -//! This module contains impls of `Visit` for those types that -//! introduce binders. -//! -//! The more interesting impls of `Visit` remain in the `visit` module. - -use crate::interner::HasInterner; -use crate::{Binders, Canonical, ControlFlow, DebruijnIndex, FnPointer, Interner, Visit, Visitor}; - -impl<I: Interner> Visit<I> for FnPointer<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - self.substitution - .visit_with(visitor, outer_binder.shifted_in()) - } -} - -impl<T, I: Interner> Visit<I> for Binders<T> -where - T: HasInterner + Visit<I>, -{ - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - self.value.visit_with(visitor, outer_binder.shifted_in()) - } -} - -impl<I, T> Visit<I> for Canonical<T> -where - I: Interner, - T: HasInterner<Interner = I> + Visit<I>, -{ - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - self.value.visit_with(visitor, outer_binder.shifted_in()) - } -} diff --git a/vendor/chalk-ir-0.80.0/src/visit/boring_impls.rs b/vendor/chalk-ir-0.80.0/src/visit/boring_impls.rs deleted file mode 100644 index d4e52d15b..000000000 --- a/vendor/chalk-ir-0.80.0/src/visit/boring_impls.rs +++ /dev/null @@ -1,261 +0,0 @@ -//! This module contains "rote and uninteresting" impls of `Visit` for -//! various types. In general, we prefer to derive `Visit`, but -//! sometimes that doesn't work for whatever reason. -//! -//! The more interesting impls of `Visit` remain in the `visit` module. - -use crate::{ - try_break, AdtId, AssocTypeId, ClausePriority, ClosureId, Constraints, ControlFlow, - DebruijnIndex, FloatTy, FnDefId, ForeignDefId, GeneratorId, GenericArg, Goals, ImplId, IntTy, - Interner, Mutability, OpaqueTyId, PlaceholderIndex, ProgramClause, ProgramClauses, - QuantifiedWhereClauses, QuantifierKind, Safety, Scalar, Substitution, SuperVisit, TraitId, - UintTy, UniverseIndex, Visit, Visitor, -}; -use std::{marker::PhantomData, sync::Arc}; - -/// Convenience function to visit all the items in the iterator it. -pub fn visit_iter<'i, T, I, B>( - it: impl Iterator<Item = T>, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, -) -> ControlFlow<B> -where - T: Visit<I>, - I: 'i + Interner, -{ - for e in it { - try_break!(e.visit_with(visitor, outer_binder)); - } - ControlFlow::Continue(()) -} - -impl<T: Visit<I>, I: Interner> Visit<I> for &T { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - T::visit_with(self, visitor, outer_binder) - } -} - -impl<T: Visit<I>, I: Interner> Visit<I> for Vec<T> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - visit_iter(self.iter(), visitor, outer_binder) - } -} - -impl<T: Visit<I>, I: Interner> Visit<I> for &[T] { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - visit_iter(self.iter(), visitor, outer_binder) - } -} - -impl<T: Visit<I>, I: Interner> Visit<I> for Box<T> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - T::visit_with(self, visitor, outer_binder) - } -} - -impl<T: Visit<I>, I: Interner> Visit<I> for Arc<T> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - T::visit_with(self, visitor, outer_binder) - } -} - -macro_rules! tuple_visit { - ($($n:ident),*) => { - impl<$($n: Visit<I>,)* I: Interner> Visit<I> for ($($n,)*) { - fn visit_with<BT>(&self, visitor: &mut dyn Visitor<I, BreakTy = BT>, outer_binder: DebruijnIndex) -> ControlFlow<BT> { - #[allow(non_snake_case)] - let &($(ref $n),*) = self; - $( - try_break!($n.visit_with(visitor, outer_binder)); - )* - ControlFlow::Continue(()) - } - } - } -} - -tuple_visit!(A, B); -tuple_visit!(A, B, C); -tuple_visit!(A, B, C, D); -tuple_visit!(A, B, C, D, E); - -impl<T: Visit<I>, I: Interner> Visit<I> for Option<T> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - match self { - Some(e) => e.visit_with(visitor, outer_binder), - None => ControlFlow::Continue(()), - } - } -} - -impl<I: Interner> Visit<I> for GenericArg<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - self.data(interner).visit_with(visitor, outer_binder) - } -} - -impl<I: Interner> Visit<I> for Substitution<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - visit_iter(self.iter(interner), visitor, outer_binder) - } -} - -impl<I: Interner> Visit<I> for Goals<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - visit_iter(self.iter(interner), visitor, outer_binder) - } -} - -#[doc(hidden)] -#[macro_export] -macro_rules! const_visit { - ($t:ty) => { - impl<I: Interner> $crate::visit::Visit<I> for $t { - fn visit_with<B>( - &self, - _visitor: &mut dyn ($crate::visit::Visitor<I, BreakTy = B>), - _outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - ControlFlow::Continue(()) - } - } - }; -} - -const_visit!(bool); -const_visit!(usize); -const_visit!(UniverseIndex); -const_visit!(PlaceholderIndex); -const_visit!(QuantifierKind); -const_visit!(DebruijnIndex); -const_visit!(ClausePriority); -const_visit!(()); -const_visit!(Scalar); -const_visit!(UintTy); -const_visit!(IntTy); -const_visit!(FloatTy); -const_visit!(Mutability); -const_visit!(Safety); - -#[doc(hidden)] -#[macro_export] -macro_rules! id_visit { - ($t:ident) => { - impl<I: Interner> $crate::visit::Visit<I> for $t<I> { - fn visit_with<B>( - &self, - _visitor: &mut dyn ($crate::visit::Visitor<I, BreakTy = B>), - _outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - ControlFlow::Continue(()) - } - } - }; -} - -id_visit!(ImplId); -id_visit!(AdtId); -id_visit!(TraitId); -id_visit!(OpaqueTyId); -id_visit!(AssocTypeId); -id_visit!(FnDefId); -id_visit!(ClosureId); -id_visit!(GeneratorId); -id_visit!(ForeignDefId); - -impl<I: Interner> SuperVisit<I> for ProgramClause<I> { - fn super_visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - - self.data(interner).0.visit_with(visitor, outer_binder) - } -} - -impl<I: Interner> Visit<I> for ProgramClauses<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - - visit_iter(self.iter(interner), visitor, outer_binder) - } -} - -impl<I: Interner> Visit<I> for Constraints<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - - visit_iter(self.iter(interner), visitor, outer_binder) - } -} - -impl<I: Interner> Visit<I> for QuantifiedWhereClauses<I> { - fn visit_with<B>( - &self, - visitor: &mut dyn Visitor<I, BreakTy = B>, - outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - let interner = visitor.interner(); - - visit_iter(self.iter(interner), visitor, outer_binder) - } -} - -impl<I: Interner> Visit<I> for PhantomData<I> { - fn visit_with<B>( - &self, - _visitor: &mut dyn Visitor<I, BreakTy = B>, - _outer_binder: DebruijnIndex, - ) -> ControlFlow<B> { - ControlFlow::Continue(()) - } -} 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(()) - } -} |