Make closure_saved_names_of_captured_variables a query.
This commit is contained in:
parent
18a6d911ca
commit
7d5b2e4926
13 changed files with 71 additions and 39 deletions
|
@ -55,6 +55,10 @@ impl<T> EraseType for &'_ ty::List<T> {
|
|||
type Result = [u8; size_of::<*const ()>()];
|
||||
}
|
||||
|
||||
impl<I: rustc_index::Idx, T> EraseType for &'_ rustc_index::IndexSlice<I, T> {
|
||||
type Result = [u8; size_of::<&'static rustc_index::IndexSlice<u32, ()>>()];
|
||||
}
|
||||
|
||||
impl<T> EraseType for Result<&'_ T, traits::query::NoSolution> {
|
||||
type Result = [u8; size_of::<Result<&'static (), traits::query::NoSolution>>()];
|
||||
}
|
||||
|
|
|
@ -531,6 +531,19 @@ rustc_queries! {
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns names of captured upvars for closures and generators.
|
||||
///
|
||||
/// Here are some examples:
|
||||
/// - `name__field1__field2` when the upvar is captured by value.
|
||||
/// - `_ref__name__field` when the upvar is captured by reference.
|
||||
///
|
||||
/// For generators this only contains upvars that are shared by all states.
|
||||
query closure_saved_names_of_captured_variables(def_id: DefId) -> &'tcx IndexVec<abi::FieldIdx, Symbol> {
|
||||
arena_cache
|
||||
desc { |tcx| "computing debuginfo for closure `{}`", tcx.def_path_str(def_id) }
|
||||
separate_provide_extern
|
||||
}
|
||||
|
||||
query mir_generator_witnesses(key: DefId) -> &'tcx Option<mir::GeneratorLayout<'tcx>> {
|
||||
arena_cache
|
||||
desc { |tcx| "generator witness types for `{}`", tcx.def_path_str(key) }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue