use alloc::borrow::ToOwned;
use alloc::boxed::Box;
use alloc::format;
use alloc::string::{String, ToString};
use alloc::vec;
use alloc::vec::Vec;
#[macro_export]
macro_rules! bug {
() => (
$crate::bug!("impossible case reached")
);
($($arg:tt)+) => (
$crate::rustc_middle::util::bug::bug_fmt(::core::format_args!($($arg)+))
);
}
#[macro_export]
macro_rules! span_bug {
($span:expr, $($arg:tt)+) => (
$crate::rustc_middle::util::bug::span_bug_fmt($span, ::core::format_args!($($arg)+))
);
}
macro_rules! TrivialLiftImpls {
($($ty:ty),+ $(,)?) => {
$(
impl<'tcx> $crate::rustc_middle::ty::Lift<$crate::rustc_middle::ty::TyCtxt<'tcx>> for $ty {
type Lifted = Self;
fn lift_to_interner(self, _: $crate::rustc_middle::ty::TyCtxt<'tcx>) -> Self {
self
}
}
)+
};
}
macro_rules! TrivialTypeTraversalImpls {
($($ty:ty),+ $(,)?) => {
$(
impl<'tcx> $crate::rustc_middle::ty::TypeFoldable<$crate::rustc_middle::ty::TyCtxt<'tcx>> for $ty {
fn try_fold_with<F: $crate::rustc_middle::ty::FallibleTypeFolder<$crate::rustc_middle::ty::TyCtxt<'tcx>>>(
self,
_: &mut F,
) -> ::core::result::Result<Self, F::Error> {
Ok(self)
}
#[inline]
fn fold_with<F: $crate::rustc_middle::ty::TypeFolder<$crate::rustc_middle::ty::TyCtxt<'tcx>>>(
self,
_: &mut F,
) -> Self {
self
}
}
impl<'tcx> $crate::rustc_middle::ty::TypeVisitable<$crate::rustc_middle::ty::TyCtxt<'tcx>> for $ty {
#[inline]
fn visit_with<F: $crate::rustc_middle::ty::TypeVisitor<$crate::rustc_middle::ty::TyCtxt<'tcx>>>(
&self,
_: &mut F)
-> F::Result
{
<F::Result as $crate::rustc_middle::ty::VisitorResult>::output()
}
}
)+
};
}
macro_rules! TrivialTypeTraversalAndLiftImpls {
($($t:tt)*) => {
TrivialTypeTraversalImpls! { $($t)* }
TrivialLiftImpls! { $($t)* }
}
}