Use custom trait instead of Into
This commit is contained in:
parent
fd8cf3c5e3
commit
beeacdb2a7
@ -189,3 +189,23 @@ pub fn force_from_dep_node<'tcx>(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> bool
|
||||
pub(crate) fn try_load_from_on_disk_cache<'tcx>(tcx: TyCtxt<'tcx>, dep_node: &DepNode) {
|
||||
rustc_dep_node_try_load_from_on_disk_cache!(dep_node, tcx)
|
||||
}
|
||||
|
||||
/// An analogue of the `Into` trait that's intended only for query paramaters.
|
||||
///
|
||||
/// This exists to allow queries to accept either `DefId` or `LocalDefId` while requiring that the
|
||||
/// user call `to_def_id` to convert between them everywhere else.
|
||||
pub trait IntoQueryParam<P> {
|
||||
fn into_query_param(self) -> P;
|
||||
}
|
||||
|
||||
impl<P> IntoQueryParam<P> for P {
|
||||
fn into_query_param(self) -> P {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl IntoQueryParam<DefId> for LocalDefId {
|
||||
fn into_query_param(self) -> DefId {
|
||||
self.to_def_id()
|
||||
}
|
||||
}
|
||||
|
@ -243,7 +243,7 @@ macro_rules! define_queries {
|
||||
}
|
||||
|
||||
macro_rules! query_helper_param_ty {
|
||||
(DefId) => { impl Into<DefId> };
|
||||
(DefId) => { impl IntoQueryParam<DefId> };
|
||||
($K:ty) => { $K };
|
||||
}
|
||||
|
||||
@ -386,7 +386,7 @@ macro_rules! define_queries_inner {
|
||||
$($(#[$attr])*
|
||||
#[inline(always)]
|
||||
pub fn $name(self, key: query_helper_param_ty!($($K)*)) {
|
||||
ensure_query::<queries::$name<'_>, _>(self.tcx, key.into())
|
||||
ensure_query::<queries::$name<'_>, _>(self.tcx, key.into_query_param())
|
||||
})*
|
||||
}
|
||||
|
||||
@ -464,7 +464,7 @@ macro_rules! define_queries_inner {
|
||||
$($(#[$attr])*
|
||||
#[inline(always)]
|
||||
pub fn $name(self, key: query_helper_param_ty!($($K)*)) -> $V {
|
||||
get_query::<queries::$name<'_>, _>(self.tcx, self.span, key.into())
|
||||
get_query::<queries::$name<'_>, _>(self.tcx, self.span, key.into_query_param())
|
||||
})*
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user