Skip to content

Commit f187546

Browse files
authored
Unrolled build for #144717
Rollup merge of #144717 - nnethercote:mv-rustc_middle-parameterized, r=compiler-errors Move `rustc_middle::parameterized` It doesn't need to be in `rustc_middle`. r? `@compiler-errors`
2 parents 32e7a4b + 66fd421 commit f187546

File tree

5 files changed

+170
-189
lines changed

5 files changed

+170
-189
lines changed

compiler/rustc_metadata/src/rmeta/def_path_hash_map.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use rustc_data_structures::owned_slice::OwnedSlice;
22
use rustc_hir::def_path_hash_map::{Config as HashMapConfig, DefPathHashMap};
3-
use rustc_middle::parameterized_over_tcx;
43
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
54
use rustc_span::def_id::{DefIndex, DefPathHash};
65

@@ -11,10 +10,6 @@ pub(crate) enum DefPathHashMapRef<'tcx> {
1110
BorrowedFromTcx(&'tcx DefPathHashMap),
1211
}
1312

14-
parameterized_over_tcx! {
15-
DefPathHashMapRef,
16-
}
17-
1813
impl DefPathHashMapRef<'_> {
1914
#[inline]
2015
pub(crate) fn def_path_hash_to_def_index(&self, def_path_hash: &DefPathHash) -> DefIndex {

compiler/rustc_metadata/src/rmeta/mod.rs

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use decoder::{DecodeContext, Metadata};
66
use def_path_hash_map::DefPathHashMapRef;
77
use encoder::EncodeContext;
88
pub use encoder::{EncodedMetadata, encode_metadata, rendered_const};
9+
pub(crate) use parameterized::ParameterizedOverTcx;
910
use rustc_abi::{FieldIdx, ReprOptions, VariantIdx};
1011
use rustc_attr_data_structures::StrippedCfgItem;
1112
use rustc_data_structures::fx::FxHashMap;
@@ -26,12 +27,10 @@ use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
2627
use rustc_middle::middle::exported_symbols::{ExportedSymbol, SymbolExportInfo};
2728
use rustc_middle::middle::lib_features::FeatureStability;
2829
use rustc_middle::middle::resolve_bound_vars::ObjectLifetimeDefault;
30+
use rustc_middle::mir;
2931
use rustc_middle::ty::fast_reject::SimplifiedType;
30-
use rustc_middle::ty::{
31-
self, DeducedParamAttrs, ParameterizedOverTcx, Ty, TyCtxt, UnusedGenericParams,
32-
};
32+
use rustc_middle::ty::{self, DeducedParamAttrs, Ty, TyCtxt, UnusedGenericParams};
3333
use rustc_middle::util::Providers;
34-
use rustc_middle::{mir, trivially_parameterized_over_tcx};
3534
use rustc_serialize::opaque::FileEncoder;
3635
use rustc_session::config::{SymbolManglingVersion, TargetModifier};
3736
use rustc_session::cstore::{CrateDepKind, ForeignModule, LinkagePreference, NativeLib};
@@ -47,6 +46,7 @@ use crate::creader::CrateMetadataRef;
4746
mod decoder;
4847
mod def_path_hash_map;
4948
mod encoder;
49+
mod parameterized;
5050
mod table;
5151

5252
pub(crate) fn rustc_version(cfg_version: &'static str) -> String {
@@ -86,10 +86,6 @@ struct LazyValue<T> {
8686
_marker: PhantomData<fn() -> T>,
8787
}
8888

89-
impl<T: ParameterizedOverTcx> ParameterizedOverTcx for LazyValue<T> {
90-
type Value<'tcx> = LazyValue<T::Value<'tcx>>;
91-
}
92-
9389
impl<T> LazyValue<T> {
9490
fn from_position(position: NonZero<usize>) -> LazyValue<T> {
9591
LazyValue { position, _marker: PhantomData }
@@ -112,10 +108,6 @@ struct LazyArray<T> {
112108
_marker: PhantomData<fn() -> T>,
113109
}
114110

115-
impl<T: ParameterizedOverTcx> ParameterizedOverTcx for LazyArray<T> {
116-
type Value<'tcx> = LazyArray<T::Value<'tcx>>;
117-
}
118-
119111
impl<T> Default for LazyArray<T> {
120112
fn default() -> LazyArray<T> {
121113
LazyArray::from_position_and_num_elems(NonZero::new(1).unwrap(), 0)
@@ -143,10 +135,6 @@ struct LazyTable<I, T> {
143135
_marker: PhantomData<fn(I) -> T>,
144136
}
145137

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

compiler/rustc_middle/src/ty/mod.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ pub use self::fold::*;
8585
pub use self::instance::{Instance, InstanceKind, ReifyReason, ShortInstance, UnusedGenericParams};
8686
pub use self::list::{List, ListWithCachedTypeInfo};
8787
pub use self::opaque_types::OpaqueTypeKey;
88-
pub use self::parameterized::ParameterizedOverTcx;
8988
pub use self::pattern::{Pattern, PatternKind};
9089
pub use self::predicate::{
9190
AliasTerm, ArgOutlivesPredicate, Clause, ClauseKind, CoercePredicate, ExistentialPredicate,
@@ -158,7 +157,6 @@ mod instance;
158157
mod intrinsic;
159158
mod list;
160159
mod opaque_types;
161-
mod parameterized;
162160
mod predicate;
163161
mod region;
164162
mod rvalue_scopes;

0 commit comments

Comments
 (0)