1
Fork 0

query_keys_local is conditional on separate_provide_if_extern

This commit is contained in:
Michael Goulet 2023-03-18 19:40:00 +00:00
parent d213114cb5
commit b1a957b0b9

View file

@ -151,21 +151,17 @@ macro_rules! query_if_arena {
}; };
} }
macro_rules! separate_provide_local_decl { /// If `separate_provide_if_extern`, then the key can be projected to its
([][$name:ident]) => { /// local key via `<$K as AsLocalKey>::LocalKey`.
for<'tcx> fn( macro_rules! local_key_if_separate_extern {
TyCtxt<'tcx>, ([] $($K:tt)*) => {
query_keys::$name<'tcx>, $($K)*
) -> query_provided::$name<'tcx>
}; };
([(separate_provide_extern) $($rest:tt)*][$name:ident]) => { ([(separate_provide_extern) $($rest:tt)*] $($K:tt)*) => {
for<'tcx> fn( <$($K)* as AsLocalKey>::LocalKey
TyCtxt<'tcx>,
query_keys_local::$name<'tcx>,
) -> query_provided::$name<'tcx>
}; };
([$other:tt $($modifiers:tt)*][$($args:tt)*]) => { ([$other:tt $($modifiers:tt)*] $($K:tt)*) => {
separate_provide_local_decl!([$($modifiers)*][$($args)*]) local_key_if_separate_extern!([$($modifiers)*] $($K)*)
}; };
} }
@ -233,7 +229,7 @@ macro_rules! define_callbacks {
pub mod query_keys_local { pub mod query_keys_local {
use super::*; use super::*;
$(pub type $name<'tcx> = <$($K)* as AsLocalKey>::LocalKey;)* $(pub type $name<'tcx> = local_key_if_separate_extern!([$($modifiers)*] $($K)*);)*
} }
#[allow(nonstandard_style, unused_lifetimes)] #[allow(nonstandard_style, unused_lifetimes)]
pub mod query_values { pub mod query_values {
@ -407,7 +403,10 @@ macro_rules! define_callbacks {
} }
pub struct Providers { pub struct Providers {
$(pub $name: separate_provide_local_decl!([$($modifiers)*][$name]),)* $(pub $name: for<'tcx> fn(
TyCtxt<'tcx>,
query_keys_local::$name<'tcx>,
) -> query_provided::$name<'tcx>,)*
} }
pub struct ExternProviders { pub struct ExternProviders {