Small cleanup in parameterized

This commit is contained in:
Nilstrieb 2022-12-15 20:40:10 +01:00
parent 984eab57f7
commit 153419b78f

View File

@ -2,14 +2,9 @@ use rustc_data_structures::fx::FxHashMap;
use rustc_hir::def_id::{DefId, DefIndex};
use rustc_index::vec::{Idx, IndexVec};
use crate::middle::exported_symbols::ExportedSymbol;
use crate::mir::Body;
use crate::ty::{
self, Clause, Const, FnSig, GeneratorDiagnosticData, GenericPredicates, Predicate, TraitRef, Ty,
};
use crate::ty;
pub trait ParameterizedOverTcx: 'static {
#[allow(unused_lifetimes)]
type Value<'tcx>;
}
@ -100,29 +95,28 @@ trivially_parameterized_over_tcx! {
rustc_type_ir::Variance,
}
// HACK(compiler-errors): This macro rule can only take an ident,
// not a path, due to parsing ambiguity reasons. That means we gotta
// import all of these types above.
// HACK(compiler-errors): This macro rule can only take a fake path,
// not a real, due to parsing ambiguity reasons.
#[macro_export]
macro_rules! parameterized_over_tcx {
($($ident:ident),+ $(,)?) => {
($($($fake_path:ident)::+),+ $(,)?) => {
$(
impl $crate::ty::ParameterizedOverTcx for $ident<'static> {
type Value<'tcx> = $ident<'tcx>;
impl $crate::ty::ParameterizedOverTcx for $($fake_path)::+<'static> {
type Value<'tcx> = $($fake_path)::+<'tcx>;
}
)*
}
}
parameterized_over_tcx! {
Ty,
FnSig,
GenericPredicates,
TraitRef,
Const,
Predicate,
Clause,
GeneratorDiagnosticData,
Body,
ExportedSymbol,
crate::middle::exported_symbols::ExportedSymbol,
crate::mir::Body,
ty::Ty,
ty::FnSig,
ty::GenericPredicates,
ty::TraitRef,
ty::Const,
ty::Predicate,
ty::Clause,
ty::GeneratorDiagnosticData,
}