Skip to main content

rustc_query_impl/
dep_kind_vtables.rs

1use rustc_middle::arena::Arena;
2use rustc_middle::bug;
3use rustc_middle::dep_graph::{DepKindVTable, DepNodeKey, KeyFingerprintStyle};
4use rustc_middle::query::QueryCache;
5
6use crate::incremental::promote_from_disk_inner;
7use crate::query_vtables::GetQueryVTable;
8
9/// [`DepKindVTable`] constructors for special dep kinds that aren't queries.
10#[expect(non_snake_case, reason = "use non-snake case to avoid collision with query names")]
11mod non_query {
12    use super::*;
13
14    // We use this for most things when incr. comp. is turned off.
15    pub(crate) fn Null<'tcx>() -> DepKindVTable<'tcx> {
16        DepKindVTable {
17            is_eval_always: false,
18            key_fingerprint_style: KeyFingerprintStyle::Unit,
19            force_from_dep_node_fn: Some(|_, dep_node, _| {
20                ::rustc_middle::util::bug::bug_fmt(format_args!("force_from_dep_node: encountered {0:?}",
        dep_node))bug!("force_from_dep_node: encountered {dep_node:?}")
21            }),
22            promote_from_disk_fn: None,
23        }
24    }
25
26    // We use this for the forever-red node.
27    pub(crate) fn Red<'tcx>() -> DepKindVTable<'tcx> {
28        DepKindVTable {
29            is_eval_always: false,
30            key_fingerprint_style: KeyFingerprintStyle::Unit,
31            force_from_dep_node_fn: Some(|_, dep_node, _| {
32                ::rustc_middle::util::bug::bug_fmt(format_args!("force_from_dep_node: encountered {0:?}",
        dep_node))bug!("force_from_dep_node: encountered {dep_node:?}")
33            }),
34            promote_from_disk_fn: None,
35        }
36    }
37
38    pub(crate) fn SideEffect<'tcx>() -> DepKindVTable<'tcx> {
39        DepKindVTable {
40            is_eval_always: false,
41            key_fingerprint_style: KeyFingerprintStyle::Unit,
42            force_from_dep_node_fn: Some(|tcx, _, prev_index| {
43                tcx.dep_graph.force_side_effect(tcx, prev_index);
44                true
45            }),
46            promote_from_disk_fn: None,
47        }
48    }
49
50    pub(crate) fn AnonZeroDeps<'tcx>() -> DepKindVTable<'tcx> {
51        DepKindVTable {
52            is_eval_always: false,
53            key_fingerprint_style: KeyFingerprintStyle::Opaque,
54            force_from_dep_node_fn: Some(|_, _, _| ::rustc_middle::util::bug::bug_fmt(format_args!("cannot force an anon node"))bug!("cannot force an anon node")),
55            promote_from_disk_fn: None,
56        }
57    }
58
59    pub(crate) fn TraitSelect<'tcx>() -> DepKindVTable<'tcx> {
60        DepKindVTable {
61            is_eval_always: false,
62            key_fingerprint_style: KeyFingerprintStyle::Unit,
63            force_from_dep_node_fn: None,
64            promote_from_disk_fn: None,
65        }
66    }
67
68    pub(crate) fn CompileCodegenUnit<'tcx>() -> DepKindVTable<'tcx> {
69        DepKindVTable {
70            is_eval_always: false,
71            key_fingerprint_style: KeyFingerprintStyle::Opaque,
72            force_from_dep_node_fn: None,
73            promote_from_disk_fn: None,
74        }
75    }
76
77    pub(crate) fn CompileMonoItem<'tcx>() -> DepKindVTable<'tcx> {
78        DepKindVTable {
79            is_eval_always: false,
80            key_fingerprint_style: KeyFingerprintStyle::Opaque,
81            force_from_dep_node_fn: None,
82            promote_from_disk_fn: None,
83        }
84    }
85
86    pub(crate) fn Metadata<'tcx>() -> DepKindVTable<'tcx> {
87        DepKindVTable {
88            is_eval_always: false,
89            key_fingerprint_style: KeyFingerprintStyle::Unit,
90            force_from_dep_node_fn: None,
91            promote_from_disk_fn: None,
92        }
93    }
94}
95
96/// Shared implementation of the [`DepKindVTable`] constructor for queries.
97/// Called from macro-generated code for each query.
98pub(crate) fn make_dep_kind_vtable_for_query<'tcx, Q>(
99    is_cache_on_disk: bool,
100    is_eval_always: bool,
101    is_no_force: bool,
102) -> DepKindVTable<'tcx>
103where
104    Q: GetQueryVTable<'tcx>,
105{
106    // A query dep-node can only be forced or promoted if it can recover a key
107    // from its key fingerprint.
108    let key_fingerprint_style = <Q::Cache as QueryCache>::Key::key_fingerprint_style();
109    let can_recover = key_fingerprint_style.is_maybe_recoverable();
110
111    DepKindVTable {
112        is_eval_always,
113        key_fingerprint_style,
114        force_from_dep_node_fn: (can_recover && !is_no_force).then_some(
115            |tcx, dep_node, _prev_index| {
116                let query = Q::query_vtable(tcx);
117                crate::execution::force_query_dep_node(tcx, query, dep_node)
118            },
119        ),
120        promote_from_disk_fn: (can_recover && is_cache_on_disk).then_some(
121            |tcx, dep_node, prev_index, dep_node_index| {
122                let query = Q::query_vtable(tcx);
123                promote_from_disk_inner(tcx, query, dep_node, prev_index, dep_node_index)
124            },
125        ),
126    }
127}
128
129macro_rules! define_dep_kind_vtables {
130    (
131        queries {
132            $(
133                $(#[$attr:meta])*
134                fn $name:ident($K:ty) -> $V:ty
135                {
136                    // Search for (QMODLIST) to find all occurrences of this query modifier list.
137                    arena_cache: $arena_cache:literal,
138                    cache_on_disk: $cache_on_disk:literal,
139                    depth_limit: $depth_limit:literal,
140                    desc: $desc:expr,
141                    eval_always: $eval_always:literal,
142                    feedable: $feedable:literal,
143                    handle_cycle_error: $handle_cycle_error:literal,
144                    no_force: $no_force:literal,
145                    no_hash: $no_hash:literal,
146                    returns_error_guaranteed: $returns_error_guaranteed:literal,
147                    separate_provide_extern: $separate_provide_extern:literal,
148                }
149            )*
150        }
151        non_queries {
152            $(
153                $(#[$nq_attr:meta])*
154                $nq_name:ident,
155            )*
156        }
157    ) => {{
158        // The small number of non-query vtables: `Null`, `Red`, etc.
159        let nq_vtables = [
160            $(
161                non_query::$nq_name(),
162            )*
163        ];
164
165        // The large number of query vtables.
166        let q_vtables: [DepKindVTable<'tcx>; _] = [
167            $(
168                $crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<
169                    $crate::query_vtables::$name::VTableGetter,
170                >(
171                    $cache_on_disk,
172                    $eval_always,
173                    $no_force,
174                )
175            ),*
176        ];
177
178        (nq_vtables, q_vtables)
179    }}
180}
181
182// Create an array of vtables, one for each dep kind (non-query and query).
183pub fn make_dep_kind_vtables<'tcx>(arena: &'tcx Arena<'tcx>) -> &'tcx [DepKindVTable<'tcx>] {
184    let (nq_vtables, q_vtables) =
185        {
    let nq_vtables =
        [non_query::Null(), non_query::Red(), non_query::SideEffect(),
                non_query::AnonZeroDeps(), non_query::TraitSelect(),
                non_query::CompileCodegenUnit(), non_query::CompileMonoItem(),
                non_query::Metadata()];
    let q_vtables: [DepKindVTable<'tcx>; _] =
        [crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::derive_macro_expansion::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trigger_delayed_bug::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::registered_attr_tools::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::registered_lint_tools::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::early_lint_checks::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::env_var_os::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::resolutions::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::resolver_for_lowering_raw::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::index_ast::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::source_span::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lower_to_hir::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::hir_owner::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::hir_crate_items::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::hir_module_items::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::hir_owner_parent_q::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::hir_attr_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::const_param_default::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::const_of_item::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_of_opaque::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_of_opaque_hir_typeck::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_alias_is_checked::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::collect_return_position_impl_trait_in_trait_tys::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::opaque_ty_origin::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::unsizing_params_for_adt::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::analysis::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_expectations::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::generics_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::clauses_of::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::opaque_types_defined_by::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::nested_bodies_within::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_item_bounds::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_item_self_bounds::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::item_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::item_self_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::item_non_self_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::impl_super_outlives::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::native_libraries::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::shallow_lint_levels_on::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lint_expectations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::skippable_lints::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::expn_that_defined::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_panic_runtime::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_representability::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_representability_adt_ty::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::params_in_repr::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::thir_body::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_keys::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_const_qualif::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_built::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::thir_abstract_const::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_drops_elaborated_and_const_checked::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_for_ctfe::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_promoted::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::closure_typeinfo::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::closure_saved_names_of_captured_variables::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_coroutine_witnesses::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_coroutine_obligations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_potentially_region_dependent_goals::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::optimized_mir::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coverage_attr_on::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coverage_ids_info::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::promoted_mir::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::erase_and_anonymize_regions_ty::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::wasm_import_module_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trait_explicit_clauses_and_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_clauses_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inferred_outlives_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_super_clauses_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_implied_clauses_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_supertraits_containing_assoc_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::const_conditions::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::explicit_implied_const_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_param_clauses::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trait_def::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_def::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_destructor::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_async_destructor::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_sizedness_constraint::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_dtorck_constraint::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::constness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::asyncness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_promotable_const_fn::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coroutine_by_move_body_def_id::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coroutine_kind::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coroutine_for_closure::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coroutine_hidden_types::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_variances::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::variances_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inferred_outlives_crate::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::associated_item_def_ids::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::associated_item::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::associated_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::impl_item_implementor_ids::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::associated_types_for_impl_traits_in_trait_or_impl::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::impl_trait_header::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::impl_is_fully_generic_for_reflection::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::impl_self_is_guaranteed_unsized::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inherent_impls::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::incoherent_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_transmutes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_offloads::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_unsafety::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_tail_calls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::assumed_wf_types::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::assumed_wf_types_for_rpitit::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::fn_sig::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lint_mod::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_unused_traits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_mod_attrs::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_mod_unstable_api_usage::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_mod_privacy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_liveness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::live_symbols_and_ignored_derived_traits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_mod_deathness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_type_wf::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coerce_unsized_info::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::typeck_root::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::used_trait_imports::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::coherent_trait::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_borrowck::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_inherent_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_inherent_impls_validity_check::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_inherent_impls_overlap_check::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::orphan_check_impl::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_callgraph_cyclic::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_inliner_callees::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::tag_for_variant::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::eval_to_allocation_raw::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::eval_static_initializer::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::eval_to_const_value_raw::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::eval_to_valtree::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::valtree_to_const_val::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lit_to_const::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_match::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::effective_visibilities::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_private_in_public::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::reachable_set::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::region_scope_tree::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::mir_shims::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::symbol_name::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::def_kind::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::def_span::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::def_ident_span::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::ty_span::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lookup_stability::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lookup_const_stability::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lookup_default_body_stability::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::should_inherit_track_caller::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inherited_align::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lookup_deprecation_entry::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_doc_hidden::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_doc_notable_trait::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::attrs_for_def::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::codegen_fn_attrs::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::asm_target_features::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::fn_arg_idents::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::rendered_const::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::rendered_precise_capturing_args::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::impl_parent::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_mir_available::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::own_existential_vtable_entries::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::vtable_entries::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::first_method_vtable_slot::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::supertrait_vtable_slot::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::vtable_allocation::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::codegen_select_candidate::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::all_local_trait_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::local_trait_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trait_impls_of::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::specialization_graph_of::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::dyn_compatibility_violations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_dyn_compatible::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::param_env::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::param_env_normalized_for_post_analysis::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_copy_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_use_cloned_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_sized_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_freeze_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_unsafe_unpin_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_unpin_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_async_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::needs_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::needs_async_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::has_significant_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::has_structural_eq_impl::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_drop_tys::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_async_drop_tys::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::adt_significant_drop_tys::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::list_significant_drop_tys::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::layout_of::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::fn_abi_of_fn_ptr::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::fn_abi_of_instance_no_deduced_attrs::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::fn_abi_of_instance_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::dylib_dependency_formats::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::dependency_formats::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_compiler_builtins::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::has_global_allocator::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::has_alloc_error_handler::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::has_panic_handler::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_profiler_runtime::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::has_ffi_unwind_calls::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::required_panic_strategy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::panic_in_drop_strategy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_no_builtins::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::symbol_mangling_version::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::extern_crate::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::specialization_enabled_in::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::specializes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::defaultness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::default_field::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_well_formed::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::enforce_impl_non_lifetime_params_are_constrained::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::reachable_non_generics::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_reachable_non_generic::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_unreachable_local_definition::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::upstream_monomorphizations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::upstream_monomorphizations_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::upstream_drop_glue_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::upstream_async_drop_glue_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::foreign_modules::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::clashing_extern_declarations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::entry_fn::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::proc_macro_decls_static::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_hash::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_host_hash::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::extra_filename::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_extern_paths::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::implementations_of_trait::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_incoherent_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::native_library::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inherit_sig_for_delegation_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::delegation_user_specified_args::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::resolve_bound_vars::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::named_variable_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_late_bound_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::object_lifetime_default::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::late_bound_vars_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::opaque_captured_lifetimes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::live_args_for_alias_from_outlives_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::args_known_to_outlive_alias_params::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::visibility::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inhabited_predicate_adt::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::inhabited_predicate_type::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_opsem_inhabited_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_dep_kind::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_name::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::module_children::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::num_extern_def_ids::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::lib_features::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::stability_implications::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::intrinsic_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::get_lang_items::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::all_diagnostic_items::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::all_canonical_symbols::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::defined_lang_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::diagnostic_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::canonical_symbols::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::missing_lang_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::visible_parent_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trimmed_def_paths::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::missing_extern_crate_item::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::used_crate_source::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::debugger_visualizers::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::postorder_cnums::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_private_dep::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::allocator_kind::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::alloc_error_handler_kind::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::upvars_mentioned::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crates::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::used_crates::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::duplicate_crate_names::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::traits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trait_impls_in_crate::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::stable_order_of_exportable_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::exportable_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::exported_non_generic_symbols::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::exported_generic_symbols::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::collect_and_partition_mono_items::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_codegened_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::codegen_unit::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::backend_optimization_level::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::output_filenames::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::normalize_canonicalized_projection::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::normalize_canonicalized_free_alias::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::normalize_canonicalized_inherent_projection::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::try_normalize_generic_arg_after_erasing_regions::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::implied_outlives_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::dropck_outlives::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::evaluate_obligation::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_op_ascribe_user_type::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_op_prove_predicate::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_op_normalize_ty::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_op_normalize_clause::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_op_normalize_poly_fn_sig::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::type_op_normalize_fn_sig::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::instantiate_and_check_impossible_clauses::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::is_impossible_associated_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::method_autoderef_steps::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::evaluate_root_goal_for_proof_tree_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::rust_target_features::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::implied_target_features::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::features_query::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::crate_for_resolver::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::resolve_instance_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::reveal_opaque_types_in_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::limits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::diagnostic_hir_wf_check::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::global_backend_features::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_validity_requirement::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::compare_impl_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::deduced_param_attrs::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::doc_link_resolutions::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::doc_link_traits_in_scope::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::stripped_cfg_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::generics_require_sized_self::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::cross_crate_inlinable::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_mono_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::items_of_instance::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::size_estimate::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::anon_const_kind::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::trivial_const::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::sanitizer_settings_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::check_externally_implementable_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_vtables::externally_implementable_items::VTableGetter>(true,
                    false, false)];
    (nq_vtables, q_vtables)
}rustc_middle::queries::rustc_with_all_queries! { define_dep_kind_vtables! };
186
187    // Non-query vtables must come before query vtables, to match the order of `DepKind`.
188    arena.alloc_from_iter(nq_vtables.into_iter().chain(q_vtables.into_iter()))
189}