]> git.proxmox.com Git - rustc.git/blobdiff - vendor/chalk-ir/src/fold/boring_impls.rs
Merge tag 'debian/1.52.1+dfsg1-1_exp2' into proxmox/buster
[rustc.git] / vendor / chalk-ir / src / fold / boring_impls.rs
diff --git a/vendor/chalk-ir/src/fold/boring_impls.rs b/vendor/chalk-ir/src/fold/boring_impls.rs
deleted file mode 100644 (file)
index 7c01921..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-//! This module contains "rote and uninteresting" impls of `Fold` for
-//! various types. In general, we prefer to derive `Fold`, but
-//! sometimes that doesn't work for whatever reason.
-//!
-//! The more interesting impls of `Fold` remain in the `fold` module.
-
-use super::in_place;
-use crate::*;
-use std::marker::PhantomData;
-
-impl<T: Fold<I>, I: Interner> Fold<I> for Vec<T> {
-    type Result = Vec<T::Result>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        in_place::fallible_map_vec(self, |e| e.fold_with(folder, outer_binder))
-    }
-}
-
-impl<T: Fold<I>, I: Interner> Fold<I> for Box<T> {
-    type Result = Box<T::Result>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        in_place::fallible_map_box(self, |e| e.fold_with(folder, outer_binder))
-    }
-}
-
-macro_rules! tuple_fold {
-    ($($n:ident),*) => {
-        impl<$($n: Fold<I>,)* I: Interner> Fold<I> for ($($n,)*) {
-            type Result = ($($n::Result,)*);
-            fn fold_with<'i>(self, folder: &mut dyn Folder<'i, I>, outer_binder: DebruijnIndex) -> Fallible<Self::Result>
-            where
-                I: 'i,
-            {
-                #[allow(non_snake_case)]
-                let ($($n),*) = self;
-                Ok(($($n.fold_with(folder, outer_binder)?,)*))
-            }
-        }
-    }
-}
-
-tuple_fold!(A, B);
-tuple_fold!(A, B, C);
-tuple_fold!(A, B, C, D);
-tuple_fold!(A, B, C, D, E);
-
-impl<T: Fold<I>, I: Interner> Fold<I> for Option<T> {
-    type Result = Option<T::Result>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        match self {
-            None => Ok(None),
-            Some(e) => Ok(Some(e.fold_with(folder, outer_binder)?)),
-        }
-    }
-}
-
-impl<I: Interner> Fold<I> for GenericArg<I> {
-    type Result = GenericArg<I>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let interner = folder.interner();
-
-        let data = self
-            .data(interner)
-            .clone()
-            .fold_with(folder, outer_binder)?;
-        Ok(GenericArg::new(interner, data))
-    }
-}
-
-impl<I: Interner> Fold<I> for Substitution<I> {
-    type Result = Substitution<I>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let interner = folder.interner();
-
-        let folded = self
-            .iter(interner)
-            .cloned()
-            .map(|p| p.fold_with(folder, outer_binder));
-        Ok(Substitution::from_fallible(interner, folded)?)
-    }
-}
-
-impl<I: Interner> Fold<I> for Goals<I> {
-    type Result = Goals<I>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let interner = folder.interner();
-        let folded = self
-            .iter(interner)
-            .cloned()
-            .map(|p| p.fold_with(folder, outer_binder));
-        Ok(Goals::from_fallible(interner, folded)?)
-    }
-}
-
-impl<I: Interner> Fold<I> for ProgramClauses<I> {
-    type Result = ProgramClauses<I>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let interner = folder.interner();
-        let folded = self
-            .iter(interner)
-            .cloned()
-            .map(|p| p.fold_with(folder, outer_binder));
-        Ok(ProgramClauses::from_fallible(interner, folded)?)
-    }
-}
-
-impl<I: Interner> Fold<I> for QuantifiedWhereClauses<I> {
-    type Result = QuantifiedWhereClauses<I>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let interner = folder.interner();
-        let folded = self
-            .iter(interner)
-            .cloned()
-            .map(|p| p.fold_with(folder, outer_binder));
-        Ok(QuantifiedWhereClauses::from_fallible(interner, folded)?)
-    }
-}
-
-impl<I: Interner> Fold<I> for Constraints<I> {
-    type Result = Constraints<I>;
-    fn fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let interner = folder.interner();
-        let folded = self
-            .iter(interner)
-            .cloned()
-            .map(|p| p.fold_with(folder, outer_binder));
-        Ok(Constraints::from_fallible(interner, folded)?)
-    }
-}
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! copy_fold {
-    ($t:ty) => {
-        impl<I: Interner> $crate::fold::Fold<I> for $t {
-            type Result = Self;
-            fn fold_with<'i>(
-                self,
-                _folder: &mut dyn ($crate::fold::Folder<'i, I>),
-                _outer_binder: DebruijnIndex,
-            ) -> ::chalk_ir::Fallible<Self::Result>
-            where
-                I: 'i,
-            {
-                Ok(self)
-            }
-        }
-    };
-}
-
-copy_fold!(bool);
-copy_fold!(usize);
-copy_fold!(UniverseIndex);
-copy_fold!(PlaceholderIndex);
-copy_fold!(QuantifierKind);
-copy_fold!(DebruijnIndex);
-copy_fold!(());
-copy_fold!(UintTy);
-copy_fold!(IntTy);
-copy_fold!(FloatTy);
-copy_fold!(Scalar);
-copy_fold!(ClausePriority);
-copy_fold!(Mutability);
-copy_fold!(Safety);
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! id_fold {
-    ($t:ident) => {
-        impl<I: Interner> $crate::fold::Fold<I> for $t<I> {
-            type Result = $t<I>;
-            fn fold_with<'i>(
-                self,
-                _folder: &mut dyn ($crate::fold::Folder<'i, I>),
-                _outer_binder: DebruijnIndex,
-            ) -> ::chalk_ir::Fallible<Self::Result>
-            where
-                I: 'i,
-            {
-                Ok(self)
-            }
-        }
-    };
-}
-
-id_fold!(ImplId);
-id_fold!(AdtId);
-id_fold!(TraitId);
-id_fold!(AssocTypeId);
-id_fold!(OpaqueTyId);
-id_fold!(FnDefId);
-id_fold!(ClosureId);
-id_fold!(GeneratorId);
-id_fold!(ForeignDefId);
-
-impl<I: Interner> SuperFold<I> for ProgramClauseData<I> {
-    fn super_fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> ::chalk_ir::Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        Ok(ProgramClauseData(self.0.fold_with(folder, outer_binder)?))
-    }
-}
-
-impl<I: Interner> SuperFold<I> for ProgramClause<I> {
-    fn super_fold_with<'i>(
-        self,
-        folder: &mut dyn Folder<'i, I>,
-        outer_binder: DebruijnIndex,
-    ) -> ::chalk_ir::Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        let clause = self.data(folder.interner()).clone();
-        Ok(clause
-            .super_fold_with(folder, outer_binder)?
-            .intern(folder.interner()))
-    }
-}
-
-impl<I: Interner> Fold<I> for PhantomData<I> {
-    type Result = PhantomData<I>;
-
-    fn fold_with<'i>(
-        self,
-        _folder: &mut dyn Folder<'i, I>,
-        _outer_binder: DebruijnIndex,
-    ) -> ::chalk_ir::Fallible<Self::Result>
-    where
-        I: 'i,
-    {
-        Ok(PhantomData)
-    }
-}