Skip to main content

rustc_metadata/rmeta/
parameterized.rs

1use std::hash::Hash;
2
3use rustc_data_structures::unord::UnordMap;
4use rustc_index::{Idx, IndexVec};
5use rustc_middle::ty::{Binder, EarlyBinder, GenericArg, Region};
6use rustc_span::Symbol;
7
8use crate::rmeta::{LazyArray, LazyValue, LocalDefId};
9
10pub(crate) trait ParameterizedOverTcx: 'static {
11    type Value<'tcx>;
12}
13
14impl<T: ParameterizedOverTcx> ParameterizedOverTcx for Option<T> {
15    type Value<'tcx> = Option<T::Value<'tcx>>;
16}
17
18impl<A: ParameterizedOverTcx, B: ParameterizedOverTcx> ParameterizedOverTcx for (A, B) {
19    type Value<'tcx> = (A::Value<'tcx>, B::Value<'tcx>);
20}
21
22impl<T: ParameterizedOverTcx> ParameterizedOverTcx for Vec<T> {
23    type Value<'tcx> = Vec<T::Value<'tcx>>;
24}
25
26impl<I: Idx + 'static, T: ParameterizedOverTcx> ParameterizedOverTcx for IndexVec<I, T> {
27    type Value<'tcx> = IndexVec<I, T::Value<'tcx>>;
28}
29
30impl<I: Hash + Eq + 'static, T: ParameterizedOverTcx> ParameterizedOverTcx for UnordMap<I, T> {
31    type Value<'tcx> = UnordMap<I, T::Value<'tcx>>;
32}
33
34impl<T: ParameterizedOverTcx> ParameterizedOverTcx for Binder<'static, T> {
35    type Value<'tcx> = Binder<'tcx, T::Value<'tcx>>;
36}
37
38impl<T: ParameterizedOverTcx> ParameterizedOverTcx for EarlyBinder<'static, T> {
39    type Value<'tcx> = EarlyBinder<'tcx, T::Value<'tcx>>;
40}
41
42impl<T: ParameterizedOverTcx> ParameterizedOverTcx for LazyValue<T> {
43    type Value<'tcx> = LazyValue<T::Value<'tcx>>;
44}
45
46impl<T: ParameterizedOverTcx> ParameterizedOverTcx for LazyArray<T> {
47    type Value<'tcx> = LazyArray<T::Value<'tcx>>;
48}
49
50impl ParameterizedOverTcx for Region<'static> {
51    type Value<'tcx> = Region<'tcx>;
52}
53
54impl ParameterizedOverTcx for GenericArg<'static> {
55    type Value<'tcx> = GenericArg<'tcx>;
56}
57
58macro_rules! trivially_parameterized_over_tcx {
59    ($($ty:ty),+ $(,)?) => {
60        $(
61            impl ParameterizedOverTcx for $ty {
62                #[allow(unused_lifetimes)]
63                type Value<'tcx> = $ty;
64            }
65        )*
66    }
67}
68
69impl ParameterizedOverTcx for bool {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = bool;
}
impl ParameterizedOverTcx for u32 {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = u32;
}
impl ParameterizedOverTcx for u64 {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = u64;
}
impl ParameterizedOverTcx for usize {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = usize;
}
impl ParameterizedOverTcx for std::string::String {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = std::string::String;
}
impl ParameterizedOverTcx for crate::rmeta::AttrFlags {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::AttrFlags;
}
impl ParameterizedOverTcx for crate::rmeta::CrateDep {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::CrateDep;
}
impl ParameterizedOverTcx for crate::rmeta::CrateHeader {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::CrateHeader;
}
impl ParameterizedOverTcx for crate::rmeta::CrateRoot {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::CrateRoot;
}
impl ParameterizedOverTcx for crate::rmeta::CrateRootUnhashed {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::CrateRootUnhashed;
}
impl ParameterizedOverTcx for crate::rmeta::IncoherentImpls {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::IncoherentImpls;
}
impl ParameterizedOverTcx for crate::rmeta::LocalDefId {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::LocalDefId;
}
impl ParameterizedOverTcx for crate::rmeta::ProcMacroKind {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::ProcMacroKind;
}
impl ParameterizedOverTcx for crate::rmeta::TraitImpls {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::TraitImpls;
}
impl ParameterizedOverTcx for crate::rmeta::VariantData {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::VariantData;
}
impl ParameterizedOverTcx for crate::rmeta::remapped_def_id::RemappedRawDefId
    {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = crate::rmeta::remapped_def_id::RemappedRawDefId;
}
impl ParameterizedOverTcx for rustc_abi::ReprOptions {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_abi::ReprOptions;
}
impl ParameterizedOverTcx for rustc_ast::DelimArgs {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_ast::DelimArgs;
}
impl ParameterizedOverTcx for rustc_attr_ir::Attribute {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::Attribute;
}
impl ParameterizedOverTcx for rustc_attr_ir::ConstStability {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::ConstStability;
}
impl ParameterizedOverTcx for rustc_attr_ir::DefaultBodyStability {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::DefaultBodyStability;
}
impl ParameterizedOverTcx for rustc_attr_ir::Deprecation {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::Deprecation;
}
impl ParameterizedOverTcx for rustc_attr_ir::EiiDecl {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::EiiDecl;
}
impl ParameterizedOverTcx for rustc_attr_ir::EiiImpl {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::EiiImpl;
}
impl ParameterizedOverTcx for rustc_attr_ir::Stability {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::Stability;
}
impl ParameterizedOverTcx for rustc_attr_ir::StrippedCfgItem<LocalDefId> {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::StrippedCfgItem<LocalDefId>;
}
impl ParameterizedOverTcx for rustc_attr_ir::lang_items::LangItem {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_attr_ir::lang_items::LangItem;
}
impl ParameterizedOverTcx for rustc_crate_store::ForeignModule {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_crate_store::ForeignModule;
}
impl ParameterizedOverTcx for rustc_crate_store::LinkagePreference {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_crate_store::LinkagePreference;
}
impl ParameterizedOverTcx for rustc_crate_store::NativeLib {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_crate_store::NativeLib;
}
impl ParameterizedOverTcx for rustc_hir::Constness {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::Constness;
}
impl ParameterizedOverTcx for rustc_hir::CoroutineKind {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::CoroutineKind;
}
impl ParameterizedOverTcx for rustc_hir::Defaultness {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::Defaultness;
}
impl ParameterizedOverTcx for
    rustc_hir::OpaqueTyOrigin<rustc_hir::def_id::DefId> {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::OpaqueTyOrigin<rustc_hir::def_id::DefId>;
}
impl ParameterizedOverTcx for
    rustc_hir::PreciseCapturingArgKind<Symbol, Symbol> {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::PreciseCapturingArgKind<Symbol, Symbol>;
}
impl ParameterizedOverTcx for rustc_hir::Safety {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::Safety;
}
impl ParameterizedOverTcx for rustc_hir::def::DefKind {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::def::DefKind;
}
impl ParameterizedOverTcx for rustc_hir::def_id::DefId {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::def_id::DefId;
}
impl ParameterizedOverTcx for rustc_hir::def_id::DefIndex {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::def_id::DefIndex;
}
impl ParameterizedOverTcx for rustc_hir::definitions::DefKey {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_hir::definitions::DefKey;
}
impl ParameterizedOverTcx for rustc_index::bit_set::DenseBitSet<u32> {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_index::bit_set::DenseBitSet<u32>;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile {
    #[allow(unused_lifetimes)]
    type Value<'tcx> =
        rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::deduced_param_attrs::DeducedParamAttrs {
    #[allow(unused_lifetimes)]
    type Value<'tcx> =
        rustc_middle::middle::deduced_param_attrs::DeducedParamAttrs;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::exported_symbols::SymbolExportInfo {
    #[allow(unused_lifetimes)]
    type Value<'tcx> =
        rustc_middle::middle::exported_symbols::SymbolExportInfo;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::lib_features::FeatureStability {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::middle::lib_features::FeatureStability;
}
impl ParameterizedOverTcx for rustc_middle::middle::resolve::AmbigModChild {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::middle::resolve::AmbigModChild;
}
impl ParameterizedOverTcx for rustc_middle::middle::resolve::DocLinkResMap {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::middle::resolve::DocLinkResMap;
}
impl ParameterizedOverTcx for rustc_middle::middle::resolve::ModChild {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::middle::resolve::ModChild;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::resolve_bound_vars::ObjectLifetimeDefault {
    #[allow(unused_lifetimes)]
    type Value<'tcx> =
        rustc_middle::middle::resolve_bound_vars::ObjectLifetimeDefault;
}
impl ParameterizedOverTcx for rustc_middle::mir::ConstQualifs {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::mir::ConstQualifs;
}
impl ParameterizedOverTcx for rustc_middle::mir::ConstValue {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::mir::ConstValue;
}
impl ParameterizedOverTcx for rustc_middle::ty::AnonConstKind {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::AnonConstKind;
}
impl ParameterizedOverTcx for rustc_middle::ty::AssocContainer {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::AssocContainer;
}
impl ParameterizedOverTcx for rustc_middle::ty::AsyncDestructor {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::AsyncDestructor;
}
impl ParameterizedOverTcx for rustc_middle::ty::Asyncness {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::Asyncness;
}
impl ParameterizedOverTcx for rustc_middle::ty::Destructor {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::Destructor;
}
impl ParameterizedOverTcx for rustc_middle::ty::Generics {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::Generics;
}
impl ParameterizedOverTcx for rustc_middle::ty::ImplTraitInTraitData {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::ImplTraitInTraitData;
}
impl ParameterizedOverTcx for rustc_middle::ty::IntrinsicDef {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::IntrinsicDef;
}
impl ParameterizedOverTcx for rustc_middle::ty::RestrictionKind {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::RestrictionKind;
}
impl ParameterizedOverTcx for rustc_middle::ty::TraitDef {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::TraitDef;
}
impl ParameterizedOverTcx for rustc_middle::ty::Variance {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::Variance;
}
impl ParameterizedOverTcx for rustc_middle::ty::Visibility<LocalDefId> {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::Visibility<LocalDefId>;
}
impl ParameterizedOverTcx for rustc_middle::ty::adjustment::CoerceUnsizedInfo
    {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::adjustment::CoerceUnsizedInfo;
}
impl ParameterizedOverTcx for rustc_middle::ty::fast_reject::SimplifiedType {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_middle::ty::fast_reject::SimplifiedType;
}
impl ParameterizedOverTcx for rustc_session::config::TargetModifier {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_session::config::TargetModifier;
}
impl ParameterizedOverTcx for
    rustc_session::config::mitigation_coverage::DeniedPartialMitigation {
    #[allow(unused_lifetimes)]
    type Value<'tcx> =
        rustc_session::config::mitigation_coverage::DeniedPartialMitigation;
}
impl ParameterizedOverTcx for rustc_span::ExpnData {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::ExpnData;
}
impl ParameterizedOverTcx for rustc_span::ExpnHash {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::ExpnHash;
}
impl ParameterizedOverTcx for rustc_span::ExpnId {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::ExpnId;
}
impl ParameterizedOverTcx for rustc_span::Ident {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::Ident;
}
impl ParameterizedOverTcx for rustc_span::SourceFile {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::SourceFile;
}
impl ParameterizedOverTcx for rustc_span::Span {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::Span;
}
impl ParameterizedOverTcx for rustc_span::Symbol {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::Symbol;
}
impl ParameterizedOverTcx for rustc_span::hygiene::SyntaxContextKey {
    #[allow(unused_lifetimes)]
    type Value<'tcx> = rustc_span::hygiene::SyntaxContextKey;
}trivially_parameterized_over_tcx! {
70    bool,
71    u32,
72    u64,
73    usize,
74    std::string::String,
75    // tidy-alphabetical-start
76    crate::rmeta::AttrFlags,
77    crate::rmeta::CrateDep,
78    crate::rmeta::CrateHeader,
79    crate::rmeta::CrateRoot,
80    crate::rmeta::CrateRootUnhashed,
81    crate::rmeta::IncoherentImpls,
82    crate::rmeta::LocalDefId,
83    crate::rmeta::ProcMacroKind,
84    crate::rmeta::TraitImpls,
85    crate::rmeta::VariantData,
86    crate::rmeta::remapped_def_id::RemappedRawDefId,
87    rustc_abi::ReprOptions,
88    rustc_ast::DelimArgs,
89    rustc_attr_ir::Attribute,
90    rustc_attr_ir::ConstStability,
91    rustc_attr_ir::DefaultBodyStability,
92    rustc_attr_ir::Deprecation,
93    rustc_attr_ir::EiiDecl,
94    rustc_attr_ir::EiiImpl,
95    rustc_attr_ir::Stability,
96    rustc_attr_ir::StrippedCfgItem<LocalDefId>,
97    rustc_attr_ir::lang_items::LangItem,
98    rustc_crate_store::ForeignModule,
99    rustc_crate_store::LinkagePreference,
100    rustc_crate_store::NativeLib,
101    rustc_hir::Constness,
102    rustc_hir::CoroutineKind,
103    rustc_hir::Defaultness,
104    rustc_hir::OpaqueTyOrigin<rustc_hir::def_id::DefId>,
105    rustc_hir::PreciseCapturingArgKind<Symbol, Symbol>,
106    rustc_hir::Safety,
107    rustc_hir::def::DefKind,
108    rustc_hir::def_id::DefId,
109    rustc_hir::def_id::DefIndex,
110    rustc_hir::definitions::DefKey,
111    rustc_index::bit_set::DenseBitSet<u32>,
112    rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs,
113    rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile,
114    rustc_middle::middle::deduced_param_attrs::DeducedParamAttrs,
115    rustc_middle::middle::exported_symbols::SymbolExportInfo,
116    rustc_middle::middle::lib_features::FeatureStability,
117    rustc_middle::middle::resolve::AmbigModChild,
118    rustc_middle::middle::resolve::DocLinkResMap,
119    rustc_middle::middle::resolve::ModChild,
120    rustc_middle::middle::resolve_bound_vars::ObjectLifetimeDefault,
121    rustc_middle::mir::ConstQualifs,
122    rustc_middle::mir::ConstValue,
123    rustc_middle::ty::AnonConstKind,
124    rustc_middle::ty::AssocContainer,
125    rustc_middle::ty::AsyncDestructor,
126    rustc_middle::ty::Asyncness,
127    rustc_middle::ty::Destructor,
128    rustc_middle::ty::Generics,
129    rustc_middle::ty::ImplTraitInTraitData,
130    rustc_middle::ty::IntrinsicDef,
131    rustc_middle::ty::RestrictionKind,
132    rustc_middle::ty::TraitDef,
133    rustc_middle::ty::Variance,
134    rustc_middle::ty::Visibility<LocalDefId>,
135    rustc_middle::ty::adjustment::CoerceUnsizedInfo,
136    rustc_middle::ty::fast_reject::SimplifiedType,
137    rustc_session::config::TargetModifier,
138    rustc_session::config::mitigation_coverage::DeniedPartialMitigation,
139    rustc_span::ExpnData,
140    rustc_span::ExpnHash,
141    rustc_span::ExpnId,
142    rustc_span::Ident,
143    rustc_span::SourceFile,
144    rustc_span::Span,
145    rustc_span::Symbol,
146    rustc_span::hygiene::SyntaxContextKey,
147    // tidy-alphabetical-end
148}
149
150// HACK(compiler-errors): This macro rule can only take a fake path,
151// not a real, due to parsing ambiguity reasons.
152macro_rules! parameterized_over_tcx {
153    ($($( $fake_path:ident )::+ ),+ $(,)?) => {
154        $(
155            impl ParameterizedOverTcx for $( $fake_path )::+ <'static> {
156                type Value<'tcx> = $( $fake_path )::+ <'tcx>;
157            }
158        )*
159    }
160}
161
162impl ParameterizedOverTcx for crate::rmeta::DefPathHashMapRef<'static> {
    type Value<'tcx> = crate::rmeta::DefPathHashMapRef<'tcx>;
}
impl ParameterizedOverTcx for
    rustc_middle::middle::exported_symbols::ExportedSymbol<'static> {
    type Value<'tcx> =
        rustc_middle::middle::exported_symbols::ExportedSymbol<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::mir::Body<'static> {
    type Value<'tcx> = rustc_middle::mir::Body<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::mir::CoroutineLayout<'static> {
    type Value<'tcx> = rustc_middle::mir::CoroutineLayout<'tcx>;
}
impl ParameterizedOverTcx for
    rustc_middle::mir::interpret::ConstAllocation<'static> {
    type Value<'tcx> = rustc_middle::mir::interpret::ConstAllocation<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::Clause<'static> {
    type Value<'tcx> = rustc_middle::ty::Clause<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::Const<'static> {
    type Value<'tcx> = rustc_middle::ty::Const<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::ConstConditions<'static> {
    type Value<'tcx> = rustc_middle::ty::ConstConditions<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::FnSig<'static> {
    type Value<'tcx> = rustc_middle::ty::FnSig<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::GenericClauses<'static> {
    type Value<'tcx> = rustc_middle::ty::GenericClauses<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::ImplTraitHeader<'static> {
    type Value<'tcx> = rustc_middle::ty::ImplTraitHeader<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::TraitRef<'static> {
    type Value<'tcx> = rustc_middle::ty::TraitRef<'tcx>;
}
impl ParameterizedOverTcx for rustc_middle::ty::Ty<'static> {
    type Value<'tcx> = rustc_middle::ty::Ty<'tcx>;
}parameterized_over_tcx! {
163    // tidy-alphabetical-start
164    crate::rmeta::DefPathHashMapRef,
165    rustc_middle::middle::exported_symbols::ExportedSymbol,
166    rustc_middle::mir::Body,
167    rustc_middle::mir::CoroutineLayout,
168    rustc_middle::mir::interpret::ConstAllocation,
169    rustc_middle::ty::Clause,
170    rustc_middle::ty::Const,
171    rustc_middle::ty::ConstConditions,
172    rustc_middle::ty::FnSig,
173    rustc_middle::ty::GenericClauses,
174    rustc_middle::ty::ImplTraitHeader,
175    rustc_middle::ty::TraitRef,
176    rustc_middle::ty::Ty,
177    // tidy-alphabetical-end
178}