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::GetQueryVTable;
7use crate::plumbing::{force_from_dep_node_inner, promote_from_disk_inner};
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_anon: bool,
100    is_cache_on_disk: bool,
101    is_eval_always: bool,
102) -> DepKindVTable<'tcx>
103where
104    Q: GetQueryVTable<'tcx>,
105{
106    let key_fingerprint_style = if is_anon {
107        KeyFingerprintStyle::Opaque
108    } else {
109        <Q::Cache as QueryCache>::Key::key_fingerprint_style()
110    };
111
112    // A query dep-node can only be forced or promoted if it can recover a key
113    // from its key fingerprint.
114    let can_recover = key_fingerprint_style.is_maybe_recoverable();
115    if is_anon {
116        if !!can_recover {
    ::core::panicking::panic("assertion failed: !can_recover")
};assert!(!can_recover);
117    }
118
119    DepKindVTable {
120        is_eval_always,
121        key_fingerprint_style,
122        force_from_dep_node_fn: can_recover.then_some(force_from_dep_node_inner::<Q>),
123        promote_from_disk_fn: (can_recover && is_cache_on_disk)
124            .then_some(promote_from_disk_inner::<Q>),
125    }
126}
127
128macro_rules! define_dep_kind_vtables {
129    (
130        queries {
131            $(
132                $(#[$attr:meta])*
133                fn $name:ident($K:ty) -> $V:ty
134                {
135                    // Search for (QMODLIST) to find all occurrences of this query modifier list.
136                    anon: $anon:literal,
137                    arena_cache: $arena_cache:literal,
138                    cache_on_disk: $cache_on_disk:literal,
139                    cycle_error_handling: $cycle_error_handling:ident,
140                    depth_limit: $depth_limit:literal,
141                    eval_always: $eval_always:literal,
142                    feedable: $feedable:literal,
143                    no_hash: $no_hash:literal,
144                    return_result_from_ensure_ok: $return_result_from_ensure_ok:literal,
145                    separate_provide_extern: $separate_provide_extern:literal,
146                }
147            )*
148        }
149        non_queries {
150            $(
151                $(#[$nq_attr:meta])*
152                $nq_name:ident,
153            )*
154        }
155    ) => {{
156        // The small number of non-query vtables: `Null`, `Red`, etc.
157        let nq_vtables = [
158            $(
159                non_query::$nq_name(),
160            )*
161        ];
162
163        // The large number of query vtables.
164        let q_vtables: [DepKindVTable<'tcx>; _] = [
165            $(
166                $crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<
167                    $crate::query_impl::$name::VTableGetter,
168                >(
169                    $anon,
170                    $cache_on_disk,
171                    $eval_always,
172                )
173            ),*
174        ];
175
176        (nq_vtables, q_vtables)
177    }}
178}
179
180// Create an array of vtables, one for each dep kind (non-query and query).
181pub fn make_dep_kind_vtables<'tcx>(arena: &'tcx Arena<'tcx>) -> &'tcx [DepKindVTable<'tcx>] {
182    let (nq_vtables, q_vtables) =
183        {
    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_impl::derive_macro_expansion::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trigger_delayed_bug::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::registered_tools::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::early_lint_checks::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::env_var_os::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::resolutions::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::resolver_for_lowering_raw::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::source_span::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::hir_crate::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::hir_crate_items::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::hir_module_items::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::local_def_id_to_hir_id::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::hir_owner_parent_q::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::opt_hir_owner_nodes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::hir_attr_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::opt_ast_lowering_delayed_lints::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::const_param_default::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::const_of_item::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_of_opaque::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_of_opaque_hir_typeck::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_alias_is_lazy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::collect_return_position_impl_trait_in_trait_tys::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::opaque_ty_origin::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::unsizing_params_for_adt::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::analysis::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_expectations::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::generics_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::predicates_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::opaque_types_defined_by::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::nested_bodies_within::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_item_bounds::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_item_self_bounds::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::item_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::item_self_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::item_non_self_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::impl_super_outlives::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::native_libraries::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::shallow_lint_levels_on::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lint_expectations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lints_that_dont_need_to_run::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::expn_that_defined::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_panic_runtime::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_representability::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_representability_adt_ty::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::params_in_repr::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::thir_body::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_keys::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_const_qualif::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_built::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::thir_abstract_const::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_drops_elaborated_and_const_checked::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_for_ctfe::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_promoted::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::closure_typeinfo::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::closure_saved_names_of_captured_variables::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_coroutine_witnesses::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_coroutine_obligations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_potentially_region_dependent_goals::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::optimized_mir::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coverage_attr_on::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coverage_ids_info::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::promoted_mir::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::erase_and_anonymize_regions_ty::VTableGetter>(true,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::wasm_import_module_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trait_explicit_predicates_and_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_predicates_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inferred_outlives_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_super_predicates_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_implied_predicates_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_supertraits_containing_assoc_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::const_conditions::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::explicit_implied_const_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_param_predicates::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trait_def::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_def::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_destructor::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_async_destructor::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_sizedness_constraint::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_dtorck_constraint::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::constness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::asyncness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_promotable_const_fn::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coroutine_by_move_body_def_id::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coroutine_kind::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coroutine_for_closure::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coroutine_hidden_types::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_variances::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::variances_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inferred_outlives_crate::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::associated_item_def_ids::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::associated_item::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::associated_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::impl_item_implementor_ids::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::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_impl::impl_trait_header::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::impl_self_is_guaranteed_unsized::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inherent_impls::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::incoherent_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_transmutes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_unsafety::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_tail_calls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::assumed_wf_types::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::assumed_wf_types_for_rpitit::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::fn_sig::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lint_mod::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_unused_traits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_mod_attrs::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_mod_unstable_api_usage::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_mod_privacy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_liveness::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::live_symbols_and_ignored_derived_traits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_mod_deathness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_type_wf::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coerce_unsized_info::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::typeck::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::used_trait_imports::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::coherent_trait::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_borrowck::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_inherent_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_inherent_impls_validity_check::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_inherent_impls_overlap_check::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::orphan_check_impl::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_callgraph_cyclic::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_inliner_callees::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::tag_for_variant::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::eval_to_allocation_raw::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::eval_static_initializer::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::eval_to_const_value_raw::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::eval_to_valtree::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::valtree_to_const_val::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lit_to_const::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_match::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::effective_visibilities::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_private_in_public::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::reachable_set::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::region_scope_tree::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::mir_shims::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::symbol_name::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::def_kind::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::def_span::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::def_ident_span::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::ty_span::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lookup_stability::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lookup_const_stability::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lookup_default_body_stability::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::should_inherit_track_caller::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inherited_align::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lookup_deprecation_entry::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_doc_hidden::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_doc_notable_trait::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::attrs_for_def::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::codegen_fn_attrs::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::asm_target_features::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::fn_arg_idents::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::rendered_const::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::rendered_precise_capturing_args::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::impl_parent::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_mir_available::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::own_existential_vtable_entries::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::vtable_entries::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::first_method_vtable_slot::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::supertrait_vtable_slot::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::vtable_allocation::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::codegen_select_candidate::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::all_local_trait_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::local_trait_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trait_impls_of::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::specialization_graph_of::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::dyn_compatibility_violations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_dyn_compatible::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::param_env::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::typing_env_normalized_for_post_analysis::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_copy_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_use_cloned_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_sized_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_freeze_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_unsafe_unpin_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_unpin_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_async_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::needs_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::needs_async_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::has_significant_drop_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::has_structural_eq_impl::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_drop_tys::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_async_drop_tys::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::adt_significant_drop_tys::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::list_significant_drop_tys::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::layout_of::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::fn_abi_of_fn_ptr::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::fn_abi_of_instance_no_deduced_attrs::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::fn_abi_of_instance_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::dylib_dependency_formats::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::dependency_formats::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_compiler_builtins::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::has_global_allocator::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::has_alloc_error_handler::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::has_panic_handler::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_profiler_runtime::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::has_ffi_unwind_calls::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::required_panic_strategy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::panic_in_drop_strategy::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_no_builtins::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::symbol_mangling_version::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::extern_crate::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::specialization_enabled_in::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::specializes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::in_scope_traits_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::defaultness::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::default_field::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_well_formed::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::enforce_impl_non_lifetime_params_are_constrained::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::reachable_non_generics::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_reachable_non_generic::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_unreachable_local_definition::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::upstream_monomorphizations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::upstream_monomorphizations_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::upstream_drop_glue_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::upstream_async_drop_glue_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::foreign_modules::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::clashing_extern_declarations::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::entry_fn::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::proc_macro_decls_static::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_hash::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_host_hash::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::extra_filename::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_extern_paths::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::implementations_of_trait::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_incoherent_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::native_library::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inherit_sig_for_delegation_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::resolve_bound_vars::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::named_variable_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_late_bound_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::object_lifetime_default::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::late_bound_vars_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::opaque_captured_lifetimes::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::visibility::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inhabited_predicate_adt::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::inhabited_predicate_type::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_dep_kind::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_name::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::module_children::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::num_extern_def_ids::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::lib_features::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::stability_implications::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::intrinsic_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::get_lang_items::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::all_diagnostic_items::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::defined_lang_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::diagnostic_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::missing_lang_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::visible_parent_map::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trimmed_def_paths::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::missing_extern_crate_item::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::used_crate_source::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::debugger_visualizers::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::postorder_cnums::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_private_dep::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::allocator_kind::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::alloc_error_handler_kind::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::upvars_mentioned::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crates::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::used_crates::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::duplicate_crate_names::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::traits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trait_impls_in_crate::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::stable_order_of_exportable_impls::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::exportable_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::exported_non_generic_symbols::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::exported_generic_symbols::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::collect_and_partition_mono_items::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_codegened_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::codegen_unit::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::backend_optimization_level::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::output_filenames::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::normalize_canonicalized_projection::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::normalize_canonicalized_free_alias::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::normalize_canonicalized_inherent_projection::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::try_normalize_generic_arg_after_erasing_regions::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::implied_outlives_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::dropck_outlives::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::evaluate_obligation::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_op_ascribe_user_type::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_op_prove_predicate::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_op_normalize_ty::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_op_normalize_clause::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_op_normalize_poly_fn_sig::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::type_op_normalize_fn_sig::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::instantiate_and_check_impossible_predicates::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::is_impossible_associated_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::method_autoderef_steps::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::evaluate_root_goal_for_proof_tree_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::rust_target_features::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::implied_target_features::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::features_query::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::crate_for_resolver::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::resolve_instance_raw::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::reveal_opaque_types_in_bounds::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::limits::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::diagnostic_hir_wf_check::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::global_backend_features::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_validity_requirement::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::compare_impl_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::deduced_param_attrs::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::doc_link_resolutions::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::doc_link_traits_in_scope::VTableGetter>(false,
                    false, true),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::stripped_cfg_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::generics_require_sized_self::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::cross_crate_inlinable::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_mono_item::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::skip_move_check_fns::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::items_of_instance::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::size_estimate::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::anon_const_kind::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::trivial_const::VTableGetter>(false,
                    true, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::sanitizer_settings_for::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::check_externally_implementable_items::VTableGetter>(false,
                    false, false),
                crate::dep_kind_vtables::make_dep_kind_vtable_for_query::<crate::query_impl::externally_implementable_items::VTableGetter>(false,
                    true, false)];
    (nq_vtables, q_vtables)
}rustc_middle::rustc_with_all_queries! { define_dep_kind_vtables! };
184
185    // Non-query vtables must come before query vtables, to match the order of `DepKind`.
186    arena.alloc_from_iter(nq_vtables.into_iter().chain(q_vtables.into_iter()))
187}