implement (as of now still unused) query for valtree -> constvalue conversion
This commit is contained in:
parent
1157dc7167
commit
28af967bb9
@ -35,6 +35,7 @@
|
||||
pub mod util;
|
||||
|
||||
use rustc_middle::ty::query::Providers;
|
||||
use rustc_middle::ty::ParamEnv;
|
||||
|
||||
pub fn provide(providers: &mut Providers) {
|
||||
const_eval::provide(providers);
|
||||
@ -49,6 +50,9 @@ pub fn provide(providers: &mut Providers) {
|
||||
let (param_env, raw) = param_env_and_value.into_parts();
|
||||
const_eval::const_to_valtree(tcx, param_env, raw)
|
||||
};
|
||||
providers.valtree_to_const_val = |tcx, (ty, valtree)| {
|
||||
const_eval::valtree_to_const_value(tcx, ParamEnv::empty().and(ty), valtree)
|
||||
};
|
||||
providers.deref_const = |tcx, param_env_and_value| {
|
||||
let (param_env, value) = param_env_and_value.into_parts();
|
||||
const_eval::deref_const(tcx, param_env, value)
|
||||
|
@ -936,6 +936,11 @@
|
||||
remap_env_constness
|
||||
}
|
||||
|
||||
/// Converts a type level constant value into `ConstValue`
|
||||
query valtree_to_const_val(key: (Ty<'tcx>, ty::ValTree<'tcx>)) -> ConstValue<'tcx> {
|
||||
desc { "convert type-level constant value to mir constant value"}
|
||||
}
|
||||
|
||||
/// Destructure a constant ADT or array into its variant index and its
|
||||
/// field values or return `None` if constant is invalid.
|
||||
///
|
||||
|
@ -502,3 +502,14 @@ fn default_span(&self, tcx: TyCtxt<'_>) -> Span {
|
||||
self.0.default_span(tcx)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> Key for (Ty<'tcx>, ty::ValTree<'tcx>) {
|
||||
#[inline(always)]
|
||||
fn query_crate_is_local(&self) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
fn default_span(&self, _: TyCtxt<'_>) -> Span {
|
||||
DUMMY_SP
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user