Skip to main content

rustc_query_impl/
query_vtables.rs

1use rustc_middle::queries::TaggedQueryKey;
2use rustc_middle::query::erase::{self, Erased};
3use rustc_middle::query::{QueryCache, QueryKey, QueryMode, QueryVTable};
4use rustc_middle::ty::TyCtxt;
5use rustc_span::Span;
6
7/// Trait that knows how to look up the [`QueryVTable`] for a particular query.
8///
9/// This trait allows some per-query code to be defined in generic functions
10/// with a trait bound, instead of having to be defined inline within a macro
11/// expansion.
12///
13/// There is one macro-generated implementation of this trait for each query,
14/// on the type `rustc_query_impl::query_vtables::$name::VTableGetter`.
15pub(crate) trait GetQueryVTable<'tcx> {
16    type Cache: QueryCache + 'tcx;
17
18    fn query_vtable(tcx: TyCtxt<'tcx>) -> &'tcx QueryVTable<'tcx, Self::Cache>;
19}
20
21macro_rules! define_queries {
22    (
23        // Note: `$K` and `$V` are unused but present so this can be called by
24        // `rustc_with_all_queries`.
25        queries {
26            $(
27                $(#[$attr:meta])*
28                fn $name:ident($K:ty) -> $V:ty
29                {
30                    // Search for (QMODLIST) to find all occurrences of this query modifier list.
31                    arena_cache: $arena_cache:literal,
32                    cache_on_disk: $cache_on_disk:literal,
33                    depth_limit: $depth_limit:literal,
34                    desc: $desc:expr,
35                    eval_always: $eval_always:literal,
36                    feedable: $feedable:literal,
37                    handle_cycle_error: $handle_cycle_error:literal,
38                    no_force: $no_force:literal,
39                    no_hash: $no_hash:literal,
40                    returns_error_guaranteed: $returns_error_guaranteed:literal,
41                    separate_provide_extern: $separate_provide_extern:literal,
42                }
43            )*
44        }
45        // Non-queries are unused here.
46        non_queries { $($_:tt)* }
47    ) => {
48        // This macro expects to be expanded into `crate::query_vtables`, which is this file.
49        $(
50            pub(crate) mod $name {
51                use super::*;
52
53                // It seems to be important that every query has its own monomorphic
54                // copy of `execute_query_incr` and `execute_query_non_incr`.
55                // Trying to inline these wrapper functions into their generic
56                // "inner" helpers tends to break `tests/run-make/short-ice`.
57
58                pub(crate) mod execute_query_incr {
59                    use super::*;
60                    use rustc_middle::queries::$name::{Key, Value};
61
62                    // Adding `__rust_end_short_backtrace` marker to backtraces so that we emit the frames
63                    // when `RUST_BACKTRACE=1`, add a new mod with `$name` here is to allow duplicate naming
64                    #[inline(never)]
65                    pub(crate) fn __rust_end_short_backtrace<'tcx>(
66                        tcx: TyCtxt<'tcx>,
67                        span: Span,
68                        key: Key<'tcx>,
69                        mode: QueryMode,
70                    ) -> Option<Erased<Value<'tcx>>> {
71                        #[cfg(debug_assertions)]
72                        let _guard = tracing::span!(tracing::Level::TRACE, stringify!($name), ?key).entered();
73                        crate::execution::execute_query_incr_inner(
74                            &tcx.query_system.query_vtables.$name,
75                            tcx,
76                            span,
77                            key,
78                            mode
79                        )
80                    }
81                }
82
83                pub(crate) mod execute_query_non_incr {
84                    use super::*;
85                    use rustc_middle::queries::$name::{Key, Value};
86
87                    #[inline(never)]
88                    pub(crate) fn __rust_end_short_backtrace<'tcx>(
89                        tcx: TyCtxt<'tcx>,
90                        span: Span,
91                        key: Key<'tcx>,
92                        __mode: QueryMode,
93                    ) -> Option<Erased<Value<'tcx>>> {
94                        Some(crate::execution::execute_query_non_incr_inner(
95                            &tcx.query_system.query_vtables.$name,
96                            tcx,
97                            span,
98                            key,
99                        ))
100                    }
101                }
102
103                /// Defines an `invoke_provider` function that calls the query's provider,
104                /// to be used as a function pointer in the query's vtable.
105                ///
106                /// To mark a short-backtrace boundary, the function's actual name
107                /// (after demangling) must be `__rust_begin_short_backtrace`.
108                mod invoke_provider_fn {
109                    use super::*;
110                    use rustc_middle::queries::$name::{Key, Value, provided_to_erased};
111
112                    #[inline(never)]
113                    pub(crate) fn __rust_begin_short_backtrace<'tcx>(
114                        tcx: TyCtxt<'tcx>,
115                        key: Key<'tcx>,
116                    ) -> Erased<Value<'tcx>> {
117                        #[cfg(debug_assertions)]
118                        let _guard = tracing::span!(tracing::Level::TRACE, stringify!($name), ?key).entered();
119
120                        // Call the actual provider function for this query.
121
122                        #[cfg($separate_provide_extern)]
123                        let provided_value = if let Some(local_key) = key.as_local_key() {
124                            (tcx.query_system.local_providers.$name)(tcx, local_key)
125                        } else {
126                            (tcx.query_system.extern_providers.$name)(tcx, key)
127                        };
128
129                        #[cfg(not($separate_provide_extern))]
130                        let provided_value = (tcx.query_system.local_providers.$name)(tcx, key);
131
132                        rustc_middle::ty::print::with_reduced_queries!({
133                            tracing::trace!(?provided_value);
134                        });
135
136                        // Erase the returned value, because `QueryVTable` uses erased values.
137                        // For queries with `arena_cache`, this also arena-allocates the value.
138                        provided_to_erased(tcx, provided_value)
139                    }
140                }
141
142                pub(crate) fn make_query_vtable<'tcx>(incremental: bool)
143                    -> QueryVTable<'tcx, rustc_middle::queries::$name::Cache<'tcx>>
144                {
145                    use rustc_middle::queries::$name::Value;
146                    QueryVTable {
147                        name: stringify!($name),
148                        eval_always: $eval_always,
149                        depth_limit: $depth_limit,
150                        feedable: $feedable,
151                        dep_kind: rustc_middle::dep_graph::DepKind::$name,
152                        state: Default::default(),
153                        cache: Default::default(),
154                        cache_on_disk_local: $cache_on_disk,
155                        separate_provide_extern: $separate_provide_extern,
156
157                        invoke_provider_fn: self::invoke_provider_fn::__rust_begin_short_backtrace,
158
159                        #[cfg($cache_on_disk)]
160                        try_load_from_disk_fn: |tcx, prev_index| {
161                            use rustc_middle::queries::$name::{ProvidedValue, provided_to_erased};
162
163                            let loaded_value: ProvidedValue<'tcx> =
164                                $crate::incremental::try_load_from_disk(tcx, prev_index)?;
165
166                            // Arena-alloc the value if appropriate, and erase it.
167                            Some(provided_to_erased(tcx, loaded_value))
168                        },
169                        #[cfg(not($cache_on_disk))]
170                        try_load_from_disk_fn: |_tcx, _prev_index| None,
171
172                        #[cfg($handle_cycle_error)]
173                        handle_cycle_error_fn: |tcx, key, cycle, err| {
174                            use rustc_middle::query::erase::erase_val;
175
176                            erase_val($crate::handle_cycle_error::$name(tcx, key, cycle, err))
177                        },
178                        #[cfg(not($handle_cycle_error))]
179                        handle_cycle_error_fn: |_tcx, _key, _cycle, err| {
180                            $crate::handle_cycle_error::default(err)
181                        },
182
183                        #[cfg($no_hash)]
184                        hash_value_fn: None,
185                        #[cfg(not($no_hash))]
186                        hash_value_fn: Some(|hcx, erased_value: &erase::Erased<Value<'tcx>>| {
187                            let value = erase::restore_val(*erased_value);
188                            rustc_middle::dep_graph::hash_result(hcx, &value)
189                        }),
190
191                        format_value: |erased_value: &erase::Erased<Value<'tcx>>| {
192                            format!("{:?}", erase::restore_val(*erased_value))
193                        },
194                        create_tagged_key: TaggedQueryKey::$name,
195                        execute_query_fn: if incremental {
196                            crate::query_vtables::$name::execute_query_incr::__rust_end_short_backtrace
197                        } else {
198                            crate::query_vtables::$name::execute_query_non_incr::__rust_end_short_backtrace
199                        },
200                    }
201                }
202
203                /// Marker type that implements [`GetQueryVTable`] for this query.
204                pub(crate) enum VTableGetter {}
205
206                impl<'tcx> GetQueryVTable<'tcx> for VTableGetter {
207                    type Cache = rustc_middle::queries::$name::Cache<'tcx>;
208
209                    #[inline(always)]
210                    fn query_vtable(tcx: TyCtxt<'tcx>) -> &'tcx QueryVTable<'tcx, Self::Cache> {
211                        &tcx.query_system.query_vtables.$name
212                    }
213                }
214            }
215        )*
216
217        pub(crate) fn make_query_vtables<'tcx>(incremental: bool)
218            -> rustc_middle::queries::QueryVTables<'tcx>
219        {
220            rustc_middle::queries::QueryVTables {
221                $(
222                    $name: crate::query_vtables::$name::make_query_vtable(incremental),
223                )*
224            }
225        }
226
227        /// Given a filter condition (e.g. `ALL` or `CACHE_ON_DISK`), a `tcx`,
228        /// and a closure expression that accepts `&QueryVTable`, this macro
229        /// calls that closure with each query vtable that satisfies the filter
230        /// condition.
231        ///
232        /// This needs to be a macro, because the vtables can have different
233        /// key/value/cache types for different queries.
234        ///
235        /// This macro's argument syntax is specifically intended to look like
236        /// plain Rust code, so that `for_each_query_vtable!(..)` calls will be
237        /// formatted by rustfmt.
238        ///
239        /// To avoid too much nested-macro complication, filter conditions are
240        /// implemented by hand as needed.
241        macro_rules! for_each_query_vtable {
242            // Call with all queries.
243            (ALL, $tcx:expr, $closure:expr) => {{
244                let tcx: rustc_middle::ty::TyCtxt<'_> = $tcx;
245                $(
246                    let query: &rustc_middle::query::QueryVTable<'_, _> =
247                        &tcx.query_system.query_vtables.$name;
248                    $closure(query);
249                )*
250            }};
251
252            // Only call with queries that can potentially cache to disk.
253            //
254            // This allows the use of trait bounds that only need to be satisfied
255            // by the subset of queries that actually cache to disk.
256            (CACHE_ON_DISK, $tcx:expr, $closure:expr) => {{
257                let tcx: rustc_middle::ty::TyCtxt<'_> = $tcx;
258                $(
259                    #[cfg($cache_on_disk)]
260                    {
261                        let query: &rustc_middle::query::QueryVTable<'_, _> =
262                            &tcx.query_system.query_vtables.$name;
263                        $closure(query);
264                    }
265                )*
266            }}
267        }
268
269        pub(crate) use for_each_query_vtable;
270    }
271}
272
273pub(crate) mod externally_implementable_items {
    use super::*;
    pub(crate) mod execute_query_incr {
        use super::*;
        use rustc_middle::queries::externally_implementable_items::{
            Key, Value,
        };
        #[inline(never)]
        pub(crate) fn __rust_end_short_backtrace<'tcx>(tcx: TyCtxt<'tcx>,
            span: Span, key: Key<'tcx>, mode: QueryMode)
            -> Option<Erased<Value<'tcx>>> {
            let _guard =
                {
                        use ::tracing::__macro_support::Callsite as _;
                        static __CALLSITE: ::tracing::callsite::DefaultCallsite =
                            {
                                static META: ::tracing::Metadata<'static> =
                                    {
                                        ::tracing_core::metadata::Metadata::new("externally_implementable_items",
                                            "rustc_query_impl::query_vtables::externally_implementable_items::execute_query_incr",
                                            tracing::Level::TRACE,
                                            ::tracing_core::__macro_support::Option::Some("compiler/rustc_query_impl/src/query_vtables.rs"),
                                            ::tracing_core::__macro_support::Option::Some(273u32),
                                            ::tracing_core::__macro_support::Option::Some("rustc_query_impl::query_vtables::externally_implementable_items::execute_query_incr"),
                                            ::tracing_core::field::FieldSet::new(&[{
                                                                const NAME:
                                                                    ::tracing::__macro_support::FieldName<{
                                                                        ::tracing::__macro_support::FieldName::len("key")
                                                                    }> =
                                                                    ::tracing::__macro_support::FieldName::new("key");
                                                                NAME.as_str()
                                                            }], ::tracing_core::callsite::Identifier(&__CALLSITE)),
                                            ::tracing::metadata::Kind::SPAN)
                                    };
                                ::tracing::callsite::DefaultCallsite::new(&META)
                            };
                        let mut interest = ::tracing::subscriber::Interest::never();
                        if tracing::Level::TRACE <=
                                            ::tracing::level_filters::STATIC_MAX_LEVEL &&
                                        tracing::Level::TRACE <=
                                            ::tracing::level_filters::LevelFilter::current() &&
                                    { interest = __CALLSITE.interest(); !interest.is_never() }
                                &&
                                ::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
                                    interest) {
                            let meta = __CALLSITE.metadata();
                            ::tracing::Span::new(meta,
                                &{
                                        #[allow(unused_imports)]
                                        use ::tracing::field::{debug, display, Value};
                                        meta.fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&::tracing::field::debug(&key)
                                                                    as &dyn ::tracing::field::Value))])
                                    })
                        } else {
                            let span =
                                ::tracing::__macro_support::__disabled_span(__CALLSITE.metadata());
                            {};
                            span
                        }
                    }.entered();
            crate::execution::execute_query_incr_inner(&tcx.query_system.query_vtables.externally_implementable_items,
                tcx, span, key, mode)
        }
    }
    pub(crate) mod execute_query_non_incr {
        use super::*;
        use rustc_middle::queries::externally_implementable_items::{
            Key, Value,
        };
        #[inline(never)]
        pub(crate) fn __rust_end_short_backtrace<'tcx>(tcx: TyCtxt<'tcx>,
            span: Span, key: Key<'tcx>, __mode: QueryMode)
            -> Option<Erased<Value<'tcx>>> {
            Some(crate::execution::execute_query_non_incr_inner(&tcx.query_system.query_vtables.externally_implementable_items,
                    tcx, span, key))
        }
    }
    /// Defines an `invoke_provider` function that calls the query's provider,
    /// to be used as a function pointer in the query's vtable.
    ///
    /// To mark a short-backtrace boundary, the function's actual name
    /// (after demangling) must be `__rust_begin_short_backtrace`.
    mod invoke_provider_fn {
        use super::*;
        use rustc_middle::queries::externally_implementable_items::{
            Key, Value, provided_to_erased,
        };
        #[inline(never)]
        pub(crate) fn __rust_begin_short_backtrace<'tcx>(tcx: TyCtxt<'tcx>,
            key: Key<'tcx>) -> Erased<Value<'tcx>> {
            let _guard =
                {
                        use ::tracing::__macro_support::Callsite as _;
                        static __CALLSITE: ::tracing::callsite::DefaultCallsite =
                            {
                                static META: ::tracing::Metadata<'static> =
                                    {
                                        ::tracing_core::metadata::Metadata::new("externally_implementable_items",
                                            "rustc_query_impl::query_vtables::externally_implementable_items::invoke_provider_fn",
                                            tracing::Level::TRACE,
                                            ::tracing_core::__macro_support::Option::Some("compiler/rustc_query_impl/src/query_vtables.rs"),
                                            ::tracing_core::__macro_support::Option::Some(273u32),
                                            ::tracing_core::__macro_support::Option::Some("rustc_query_impl::query_vtables::externally_implementable_items::invoke_provider_fn"),
                                            ::tracing_core::field::FieldSet::new(&[{
                                                                const NAME:
                                                                    ::tracing::__macro_support::FieldName<{
                                                                        ::tracing::__macro_support::FieldName::len("key")
                                                                    }> =
                                                                    ::tracing::__macro_support::FieldName::new("key");
                                                                NAME.as_str()
                                                            }], ::tracing_core::callsite::Identifier(&__CALLSITE)),
                                            ::tracing::metadata::Kind::SPAN)
                                    };
                                ::tracing::callsite::DefaultCallsite::new(&META)
                            };
                        let mut interest = ::tracing::subscriber::Interest::never();
                        if tracing::Level::TRACE <=
                                            ::tracing::level_filters::STATIC_MAX_LEVEL &&
                                        tracing::Level::TRACE <=
                                            ::tracing::level_filters::LevelFilter::current() &&
                                    { interest = __CALLSITE.interest(); !interest.is_never() }
                                &&
                                ::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
                                    interest) {
                            let meta = __CALLSITE.metadata();
                            ::tracing::Span::new(meta,
                                &{
                                        #[allow(unused_imports)]
                                        use ::tracing::field::{debug, display, Value};
                                        meta.fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&::tracing::field::debug(&key)
                                                                    as &dyn ::tracing::field::Value))])
                                    })
                        } else {
                            let span =
                                ::tracing::__macro_support::__disabled_span(__CALLSITE.metadata());
                            {};
                            span
                        }
                    }.entered();
            let provided_value =
                if let Some(local_key) = key.as_local_key() {
                    (tcx.query_system.local_providers.externally_implementable_items)(tcx,
                        local_key)
                } else {
                    (tcx.query_system.extern_providers.externally_implementable_items)(tcx,
                        key)
                };
            {
                let _guard = ReducedQueriesGuard::new();
                {
                    {
                        use ::tracing::__macro_support::Callsite as _;
                        static __CALLSITE: ::tracing::callsite::DefaultCallsite =
                            {
                                static META: ::tracing::Metadata<'static> =
                                    {
                                        ::tracing_core::metadata::Metadata::new("event compiler/rustc_query_impl/src/query_vtables.rs:273",
                                            "rustc_query_impl::query_vtables::externally_implementable_items::invoke_provider_fn",
                                            ::tracing::Level::TRACE,
                                            ::tracing_core::__macro_support::Option::Some("compiler/rustc_query_impl/src/query_vtables.rs"),
                                            ::tracing_core::__macro_support::Option::Some(273u32),
                                            ::tracing_core::__macro_support::Option::Some("rustc_query_impl::query_vtables::externally_implementable_items::invoke_provider_fn"),
                                            ::tracing_core::field::FieldSet::new(&[{
                                                                const NAME:
                                                                    ::tracing::__macro_support::FieldName<{
                                                                        ::tracing::__macro_support::FieldName::len("provided_value")
                                                                    }> =
                                                                    ::tracing::__macro_support::FieldName::new("provided_value");
                                                                NAME.as_str()
                                                            }], ::tracing_core::callsite::Identifier(&__CALLSITE)),
                                            ::tracing::metadata::Kind::EVENT)
                                    };
                                ::tracing::callsite::DefaultCallsite::new(&META)
                            };
                        let enabled =
                            ::tracing::Level::TRACE <=
                                        ::tracing::level_filters::STATIC_MAX_LEVEL &&
                                    ::tracing::Level::TRACE <=
                                        ::tracing::level_filters::LevelFilter::current() &&
                                {
                                    let interest = __CALLSITE.interest();
                                    !interest.is_never() &&
                                        ::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
                                            interest)
                                };
                        if enabled {
                            (|value_set: ::tracing::field::ValueSet|
                                        {
                                            let meta = __CALLSITE.metadata();
                                            ::tracing::Event::dispatch(meta, &value_set);
                                            ;
                                        })({
                                    #[allow(unused_imports)]
                                    use ::tracing::field::{debug, display, Value};
                                    __CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&::tracing::field::debug(&provided_value)
                                                                as &dyn ::tracing::field::Value))])
                                });
                        } else { ; }
                    };
                }
            };
            provided_to_erased(tcx, provided_value)
        }
    }
    pub(crate) fn make_query_vtable<'tcx>(incremental: bool)
        ->
            QueryVTable<'tcx,
            rustc_middle::queries::externally_implementable_items::Cache<'tcx>> {
        use rustc_middle::queries::externally_implementable_items::Value;
        QueryVTable {
            name: "externally_implementable_items",
            eval_always: false,
            depth_limit: false,
            feedable: false,
            dep_kind: rustc_middle::dep_graph::DepKind::externally_implementable_items,
            state: Default::default(),
            cache: Default::default(),
            cache_on_disk_local: true,
            separate_provide_extern: true,
            invoke_provider_fn: self::invoke_provider_fn::__rust_begin_short_backtrace,
            try_load_from_disk_fn: |tcx, prev_index|
                {
                    use rustc_middle::queries::externally_implementable_items::{
                        ProvidedValue, provided_to_erased,
                    };
                    let loaded_value: ProvidedValue<'tcx> =
                        crate::incremental::try_load_from_disk(tcx, prev_index)?;
                    Some(provided_to_erased(tcx, loaded_value))
                },
            handle_cycle_error_fn: |_tcx, _key, _cycle, err|
                { crate::handle_cycle_error::default(err) },
            hash_value_fn: Some(|hcx,
                    erased_value: &erase::Erased<Value<'tcx>>|
                    {
                        let value = erase::restore_val(*erased_value);
                        rustc_middle::dep_graph::hash_result(hcx, &value)
                    }),
            format_value: |erased_value: &erase::Erased<Value<'tcx>>|
                {
                    ::alloc::__export::must_use({
                            ::alloc::fmt::format(format_args!("{0:?}",
                                    erase::restore_val(*erased_value)))
                        })
                },
            create_tagged_key: TaggedQueryKey::externally_implementable_items,
            execute_query_fn: if incremental {
                crate::query_vtables::externally_implementable_items::execute_query_incr::__rust_end_short_backtrace
            } else {
                crate::query_vtables::externally_implementable_items::execute_query_non_incr::__rust_end_short_backtrace
            },
        }
    }
    /// Marker type that implements [`GetQueryVTable`] for this query.
    pub(crate) enum VTableGetter {}
    impl<'tcx> GetQueryVTable<'tcx> for VTableGetter {
        type Cache =
            rustc_middle::queries::externally_implementable_items::Cache<'tcx>;
        #[inline(always)]
        fn query_vtable(tcx: TyCtxt<'tcx>)
            -> &'tcx QueryVTable<'tcx, Self::Cache> {
            &tcx.query_system.query_vtables.externally_implementable_items
        }
    }
}
pub(crate) fn make_query_vtables<'tcx>(incremental: bool)
    -> rustc_middle::queries::QueryVTables<'tcx> {
    rustc_middle::queries::QueryVTables {
        derive_macro_expansion: crate::query_vtables::derive_macro_expansion::make_query_vtable(incremental),
        trigger_delayed_bug: crate::query_vtables::trigger_delayed_bug::make_query_vtable(incremental),
        registered_attr_tools: crate::query_vtables::registered_attr_tools::make_query_vtable(incremental),
        registered_lint_tools: crate::query_vtables::registered_lint_tools::make_query_vtable(incremental),
        early_lint_checks: crate::query_vtables::early_lint_checks::make_query_vtable(incremental),
        env_var_os: crate::query_vtables::env_var_os::make_query_vtable(incremental),
        resolutions: crate::query_vtables::resolutions::make_query_vtable(incremental),
        resolver_for_lowering_raw: crate::query_vtables::resolver_for_lowering_raw::make_query_vtable(incremental),
        index_ast: crate::query_vtables::index_ast::make_query_vtable(incremental),
        source_span: crate::query_vtables::source_span::make_query_vtable(incremental),
        lower_to_hir: crate::query_vtables::lower_to_hir::make_query_vtable(incremental),
        hir_owner: crate::query_vtables::hir_owner::make_query_vtable(incremental),
        hir_crate_items: crate::query_vtables::hir_crate_items::make_query_vtable(incremental),
        hir_module_items: crate::query_vtables::hir_module_items::make_query_vtable(incremental),
        hir_owner_parent_q: crate::query_vtables::hir_owner_parent_q::make_query_vtable(incremental),
        hir_attr_map: crate::query_vtables::hir_attr_map::make_query_vtable(incremental),
        const_param_default: crate::query_vtables::const_param_default::make_query_vtable(incremental),
        const_of_item: crate::query_vtables::const_of_item::make_query_vtable(incremental),
        type_of: crate::query_vtables::type_of::make_query_vtable(incremental),
        type_of_opaque: crate::query_vtables::type_of_opaque::make_query_vtable(incremental),
        type_of_opaque_hir_typeck: crate::query_vtables::type_of_opaque_hir_typeck::make_query_vtable(incremental),
        type_alias_is_checked: crate::query_vtables::type_alias_is_checked::make_query_vtable(incremental),
        collect_return_position_impl_trait_in_trait_tys: crate::query_vtables::collect_return_position_impl_trait_in_trait_tys::make_query_vtable(incremental),
        opaque_ty_origin: crate::query_vtables::opaque_ty_origin::make_query_vtable(incremental),
        unsizing_params_for_adt: crate::query_vtables::unsizing_params_for_adt::make_query_vtable(incremental),
        analysis: crate::query_vtables::analysis::make_query_vtable(incremental),
        check_expectations: crate::query_vtables::check_expectations::make_query_vtable(incremental),
        generics_of: crate::query_vtables::generics_of::make_query_vtable(incremental),
        clauses_of: crate::query_vtables::clauses_of::make_query_vtable(incremental),
        opaque_types_defined_by: crate::query_vtables::opaque_types_defined_by::make_query_vtable(incremental),
        nested_bodies_within: crate::query_vtables::nested_bodies_within::make_query_vtable(incremental),
        explicit_item_bounds: crate::query_vtables::explicit_item_bounds::make_query_vtable(incremental),
        explicit_item_self_bounds: crate::query_vtables::explicit_item_self_bounds::make_query_vtable(incremental),
        item_bounds: crate::query_vtables::item_bounds::make_query_vtable(incremental),
        item_self_bounds: crate::query_vtables::item_self_bounds::make_query_vtable(incremental),
        item_non_self_bounds: crate::query_vtables::item_non_self_bounds::make_query_vtable(incremental),
        impl_super_outlives: crate::query_vtables::impl_super_outlives::make_query_vtable(incremental),
        native_libraries: crate::query_vtables::native_libraries::make_query_vtable(incremental),
        shallow_lint_levels_on: crate::query_vtables::shallow_lint_levels_on::make_query_vtable(incremental),
        lint_expectations: crate::query_vtables::lint_expectations::make_query_vtable(incremental),
        skippable_lints: crate::query_vtables::skippable_lints::make_query_vtable(incremental),
        expn_that_defined: crate::query_vtables::expn_that_defined::make_query_vtable(incremental),
        is_panic_runtime: crate::query_vtables::is_panic_runtime::make_query_vtable(incremental),
        check_representability: crate::query_vtables::check_representability::make_query_vtable(incremental),
        check_representability_adt_ty: crate::query_vtables::check_representability_adt_ty::make_query_vtable(incremental),
        params_in_repr: crate::query_vtables::params_in_repr::make_query_vtable(incremental),
        thir_body: crate::query_vtables::thir_body::make_query_vtable(incremental),
        mir_keys: crate::query_vtables::mir_keys::make_query_vtable(incremental),
        mir_const_qualif: crate::query_vtables::mir_const_qualif::make_query_vtable(incremental),
        mir_built: crate::query_vtables::mir_built::make_query_vtable(incremental),
        thir_abstract_const: crate::query_vtables::thir_abstract_const::make_query_vtable(incremental),
        mir_drops_elaborated_and_const_checked: crate::query_vtables::mir_drops_elaborated_and_const_checked::make_query_vtable(incremental),
        mir_for_ctfe: crate::query_vtables::mir_for_ctfe::make_query_vtable(incremental),
        mir_promoted: crate::query_vtables::mir_promoted::make_query_vtable(incremental),
        closure_typeinfo: crate::query_vtables::closure_typeinfo::make_query_vtable(incremental),
        closure_saved_names_of_captured_variables: crate::query_vtables::closure_saved_names_of_captured_variables::make_query_vtable(incremental),
        mir_coroutine_witnesses: crate::query_vtables::mir_coroutine_witnesses::make_query_vtable(incremental),
        check_coroutine_obligations: crate::query_vtables::check_coroutine_obligations::make_query_vtable(incremental),
        check_potentially_region_dependent_goals: crate::query_vtables::check_potentially_region_dependent_goals::make_query_vtable(incremental),
        optimized_mir: crate::query_vtables::optimized_mir::make_query_vtable(incremental),
        coverage_attr_on: crate::query_vtables::coverage_attr_on::make_query_vtable(incremental),
        coverage_ids_info: crate::query_vtables::coverage_ids_info::make_query_vtable(incremental),
        promoted_mir: crate::query_vtables::promoted_mir::make_query_vtable(incremental),
        erase_and_anonymize_regions_ty: crate::query_vtables::erase_and_anonymize_regions_ty::make_query_vtable(incremental),
        wasm_import_module_map: crate::query_vtables::wasm_import_module_map::make_query_vtable(incremental),
        trait_explicit_clauses_and_bounds: crate::query_vtables::trait_explicit_clauses_and_bounds::make_query_vtable(incremental),
        explicit_clauses_of: crate::query_vtables::explicit_clauses_of::make_query_vtable(incremental),
        inferred_outlives_of: crate::query_vtables::inferred_outlives_of::make_query_vtable(incremental),
        explicit_super_clauses_of: crate::query_vtables::explicit_super_clauses_of::make_query_vtable(incremental),
        explicit_implied_clauses_of: crate::query_vtables::explicit_implied_clauses_of::make_query_vtable(incremental),
        explicit_supertraits_containing_assoc_item: crate::query_vtables::explicit_supertraits_containing_assoc_item::make_query_vtable(incremental),
        const_conditions: crate::query_vtables::const_conditions::make_query_vtable(incremental),
        explicit_implied_const_bounds: crate::query_vtables::explicit_implied_const_bounds::make_query_vtable(incremental),
        type_param_clauses: crate::query_vtables::type_param_clauses::make_query_vtable(incremental),
        trait_def: crate::query_vtables::trait_def::make_query_vtable(incremental),
        adt_def: crate::query_vtables::adt_def::make_query_vtable(incremental),
        adt_destructor: crate::query_vtables::adt_destructor::make_query_vtable(incremental),
        adt_async_destructor: crate::query_vtables::adt_async_destructor::make_query_vtable(incremental),
        adt_sizedness_constraint: crate::query_vtables::adt_sizedness_constraint::make_query_vtable(incremental),
        adt_dtorck_constraint: crate::query_vtables::adt_dtorck_constraint::make_query_vtable(incremental),
        constness: crate::query_vtables::constness::make_query_vtable(incremental),
        asyncness: crate::query_vtables::asyncness::make_query_vtable(incremental),
        is_promotable_const_fn: crate::query_vtables::is_promotable_const_fn::make_query_vtable(incremental),
        coroutine_by_move_body_def_id: crate::query_vtables::coroutine_by_move_body_def_id::make_query_vtable(incremental),
        coroutine_kind: crate::query_vtables::coroutine_kind::make_query_vtable(incremental),
        coroutine_for_closure: crate::query_vtables::coroutine_for_closure::make_query_vtable(incremental),
        coroutine_hidden_types: crate::query_vtables::coroutine_hidden_types::make_query_vtable(incremental),
        crate_variances: crate::query_vtables::crate_variances::make_query_vtable(incremental),
        variances_of: crate::query_vtables::variances_of::make_query_vtable(incremental),
        inferred_outlives_crate: crate::query_vtables::inferred_outlives_crate::make_query_vtable(incremental),
        associated_item_def_ids: crate::query_vtables::associated_item_def_ids::make_query_vtable(incremental),
        associated_item: crate::query_vtables::associated_item::make_query_vtable(incremental),
        associated_items: crate::query_vtables::associated_items::make_query_vtable(incremental),
        impl_item_implementor_ids: crate::query_vtables::impl_item_implementor_ids::make_query_vtable(incremental),
        associated_types_for_impl_traits_in_trait_or_impl: crate::query_vtables::associated_types_for_impl_traits_in_trait_or_impl::make_query_vtable(incremental),
        impl_trait_header: crate::query_vtables::impl_trait_header::make_query_vtable(incremental),
        impl_is_fully_generic_for_reflection: crate::query_vtables::impl_is_fully_generic_for_reflection::make_query_vtable(incremental),
        impl_self_is_guaranteed_unsized: crate::query_vtables::impl_self_is_guaranteed_unsized::make_query_vtable(incremental),
        inherent_impls: crate::query_vtables::inherent_impls::make_query_vtable(incremental),
        incoherent_impls: crate::query_vtables::incoherent_impls::make_query_vtable(incremental),
        check_transmutes: crate::query_vtables::check_transmutes::make_query_vtable(incremental),
        check_offloads: crate::query_vtables::check_offloads::make_query_vtable(incremental),
        check_unsafety: crate::query_vtables::check_unsafety::make_query_vtable(incremental),
        check_tail_calls: crate::query_vtables::check_tail_calls::make_query_vtable(incremental),
        assumed_wf_types: crate::query_vtables::assumed_wf_types::make_query_vtable(incremental),
        assumed_wf_types_for_rpitit: crate::query_vtables::assumed_wf_types_for_rpitit::make_query_vtable(incremental),
        fn_sig: crate::query_vtables::fn_sig::make_query_vtable(incremental),
        lint_mod: crate::query_vtables::lint_mod::make_query_vtable(incremental),
        check_unused_traits: crate::query_vtables::check_unused_traits::make_query_vtable(incremental),
        check_mod_attrs: crate::query_vtables::check_mod_attrs::make_query_vtable(incremental),
        check_mod_unstable_api_usage: crate::query_vtables::check_mod_unstable_api_usage::make_query_vtable(incremental),
        check_mod_privacy: crate::query_vtables::check_mod_privacy::make_query_vtable(incremental),
        check_liveness: crate::query_vtables::check_liveness::make_query_vtable(incremental),
        live_symbols_and_ignored_derived_traits: crate::query_vtables::live_symbols_and_ignored_derived_traits::make_query_vtable(incremental),
        check_mod_deathness: crate::query_vtables::check_mod_deathness::make_query_vtable(incremental),
        check_type_wf: crate::query_vtables::check_type_wf::make_query_vtable(incremental),
        coerce_unsized_info: crate::query_vtables::coerce_unsized_info::make_query_vtable(incremental),
        typeck_root: crate::query_vtables::typeck_root::make_query_vtable(incremental),
        used_trait_imports: crate::query_vtables::used_trait_imports::make_query_vtable(incremental),
        coherent_trait: crate::query_vtables::coherent_trait::make_query_vtable(incremental),
        mir_borrowck: crate::query_vtables::mir_borrowck::make_query_vtable(incremental),
        crate_inherent_impls: crate::query_vtables::crate_inherent_impls::make_query_vtable(incremental),
        crate_inherent_impls_validity_check: crate::query_vtables::crate_inherent_impls_validity_check::make_query_vtable(incremental),
        crate_inherent_impls_overlap_check: crate::query_vtables::crate_inherent_impls_overlap_check::make_query_vtable(incremental),
        orphan_check_impl: crate::query_vtables::orphan_check_impl::make_query_vtable(incremental),
        mir_callgraph_cyclic: crate::query_vtables::mir_callgraph_cyclic::make_query_vtable(incremental),
        mir_inliner_callees: crate::query_vtables::mir_inliner_callees::make_query_vtable(incremental),
        tag_for_variant: crate::query_vtables::tag_for_variant::make_query_vtable(incremental),
        eval_to_allocation_raw: crate::query_vtables::eval_to_allocation_raw::make_query_vtable(incremental),
        eval_static_initializer: crate::query_vtables::eval_static_initializer::make_query_vtable(incremental),
        eval_to_const_value_raw: crate::query_vtables::eval_to_const_value_raw::make_query_vtable(incremental),
        eval_to_valtree: crate::query_vtables::eval_to_valtree::make_query_vtable(incremental),
        valtree_to_const_val: crate::query_vtables::valtree_to_const_val::make_query_vtable(incremental),
        lit_to_const: crate::query_vtables::lit_to_const::make_query_vtable(incremental),
        check_match: crate::query_vtables::check_match::make_query_vtable(incremental),
        effective_visibilities: crate::query_vtables::effective_visibilities::make_query_vtable(incremental),
        check_private_in_public: crate::query_vtables::check_private_in_public::make_query_vtable(incremental),
        reachable_set: crate::query_vtables::reachable_set::make_query_vtable(incremental),
        region_scope_tree: crate::query_vtables::region_scope_tree::make_query_vtable(incremental),
        mir_shims: crate::query_vtables::mir_shims::make_query_vtable(incremental),
        symbol_name: crate::query_vtables::symbol_name::make_query_vtable(incremental),
        def_kind: crate::query_vtables::def_kind::make_query_vtable(incremental),
        def_span: crate::query_vtables::def_span::make_query_vtable(incremental),
        def_ident_span: crate::query_vtables::def_ident_span::make_query_vtable(incremental),
        ty_span: crate::query_vtables::ty_span::make_query_vtable(incremental),
        lookup_stability: crate::query_vtables::lookup_stability::make_query_vtable(incremental),
        lookup_const_stability: crate::query_vtables::lookup_const_stability::make_query_vtable(incremental),
        lookup_default_body_stability: crate::query_vtables::lookup_default_body_stability::make_query_vtable(incremental),
        should_inherit_track_caller: crate::query_vtables::should_inherit_track_caller::make_query_vtable(incremental),
        inherited_align: crate::query_vtables::inherited_align::make_query_vtable(incremental),
        lookup_deprecation_entry: crate::query_vtables::lookup_deprecation_entry::make_query_vtable(incremental),
        is_doc_hidden: crate::query_vtables::is_doc_hidden::make_query_vtable(incremental),
        is_doc_notable_trait: crate::query_vtables::is_doc_notable_trait::make_query_vtable(incremental),
        attrs_for_def: crate::query_vtables::attrs_for_def::make_query_vtable(incremental),
        codegen_fn_attrs: crate::query_vtables::codegen_fn_attrs::make_query_vtable(incremental),
        asm_target_features: crate::query_vtables::asm_target_features::make_query_vtable(incremental),
        fn_arg_idents: crate::query_vtables::fn_arg_idents::make_query_vtable(incremental),
        rendered_const: crate::query_vtables::rendered_const::make_query_vtable(incremental),
        rendered_precise_capturing_args: crate::query_vtables::rendered_precise_capturing_args::make_query_vtable(incremental),
        impl_parent: crate::query_vtables::impl_parent::make_query_vtable(incremental),
        is_mir_available: crate::query_vtables::is_mir_available::make_query_vtable(incremental),
        own_existential_vtable_entries: crate::query_vtables::own_existential_vtable_entries::make_query_vtable(incremental),
        vtable_entries: crate::query_vtables::vtable_entries::make_query_vtable(incremental),
        first_method_vtable_slot: crate::query_vtables::first_method_vtable_slot::make_query_vtable(incremental),
        supertrait_vtable_slot: crate::query_vtables::supertrait_vtable_slot::make_query_vtable(incremental),
        vtable_allocation: crate::query_vtables::vtable_allocation::make_query_vtable(incremental),
        codegen_select_candidate: crate::query_vtables::codegen_select_candidate::make_query_vtable(incremental),
        all_local_trait_impls: crate::query_vtables::all_local_trait_impls::make_query_vtable(incremental),
        local_trait_impls: crate::query_vtables::local_trait_impls::make_query_vtable(incremental),
        trait_impls_of: crate::query_vtables::trait_impls_of::make_query_vtable(incremental),
        specialization_graph_of: crate::query_vtables::specialization_graph_of::make_query_vtable(incremental),
        dyn_compatibility_violations: crate::query_vtables::dyn_compatibility_violations::make_query_vtable(incremental),
        is_dyn_compatible: crate::query_vtables::is_dyn_compatible::make_query_vtable(incremental),
        param_env: crate::query_vtables::param_env::make_query_vtable(incremental),
        param_env_normalized_for_post_analysis: crate::query_vtables::param_env_normalized_for_post_analysis::make_query_vtable(incremental),
        is_copy_raw: crate::query_vtables::is_copy_raw::make_query_vtable(incremental),
        is_use_cloned_raw: crate::query_vtables::is_use_cloned_raw::make_query_vtable(incremental),
        is_sized_raw: crate::query_vtables::is_sized_raw::make_query_vtable(incremental),
        is_freeze_raw: crate::query_vtables::is_freeze_raw::make_query_vtable(incremental),
        is_unsafe_unpin_raw: crate::query_vtables::is_unsafe_unpin_raw::make_query_vtable(incremental),
        is_unpin_raw: crate::query_vtables::is_unpin_raw::make_query_vtable(incremental),
        is_async_drop_raw: crate::query_vtables::is_async_drop_raw::make_query_vtable(incremental),
        needs_drop_raw: crate::query_vtables::needs_drop_raw::make_query_vtable(incremental),
        needs_async_drop_raw: crate::query_vtables::needs_async_drop_raw::make_query_vtable(incremental),
        has_significant_drop_raw: crate::query_vtables::has_significant_drop_raw::make_query_vtable(incremental),
        has_structural_eq_impl: crate::query_vtables::has_structural_eq_impl::make_query_vtable(incremental),
        adt_drop_tys: crate::query_vtables::adt_drop_tys::make_query_vtable(incremental),
        adt_async_drop_tys: crate::query_vtables::adt_async_drop_tys::make_query_vtable(incremental),
        adt_significant_drop_tys: crate::query_vtables::adt_significant_drop_tys::make_query_vtable(incremental),
        list_significant_drop_tys: crate::query_vtables::list_significant_drop_tys::make_query_vtable(incremental),
        layout_of: crate::query_vtables::layout_of::make_query_vtable(incremental),
        fn_abi_of_fn_ptr: crate::query_vtables::fn_abi_of_fn_ptr::make_query_vtable(incremental),
        fn_abi_of_instance_no_deduced_attrs: crate::query_vtables::fn_abi_of_instance_no_deduced_attrs::make_query_vtable(incremental),
        fn_abi_of_instance_raw: crate::query_vtables::fn_abi_of_instance_raw::make_query_vtable(incremental),
        dylib_dependency_formats: crate::query_vtables::dylib_dependency_formats::make_query_vtable(incremental),
        dependency_formats: crate::query_vtables::dependency_formats::make_query_vtable(incremental),
        is_compiler_builtins: crate::query_vtables::is_compiler_builtins::make_query_vtable(incremental),
        has_global_allocator: crate::query_vtables::has_global_allocator::make_query_vtable(incremental),
        has_alloc_error_handler: crate::query_vtables::has_alloc_error_handler::make_query_vtable(incremental),
        has_panic_handler: crate::query_vtables::has_panic_handler::make_query_vtable(incremental),
        is_profiler_runtime: crate::query_vtables::is_profiler_runtime::make_query_vtable(incremental),
        has_ffi_unwind_calls: crate::query_vtables::has_ffi_unwind_calls::make_query_vtable(incremental),
        required_panic_strategy: crate::query_vtables::required_panic_strategy::make_query_vtable(incremental),
        panic_in_drop_strategy: crate::query_vtables::panic_in_drop_strategy::make_query_vtable(incremental),
        is_no_builtins: crate::query_vtables::is_no_builtins::make_query_vtable(incremental),
        symbol_mangling_version: crate::query_vtables::symbol_mangling_version::make_query_vtable(incremental),
        extern_crate: crate::query_vtables::extern_crate::make_query_vtable(incremental),
        specialization_enabled_in: crate::query_vtables::specialization_enabled_in::make_query_vtable(incremental),
        specializes: crate::query_vtables::specializes::make_query_vtable(incremental),
        defaultness: crate::query_vtables::defaultness::make_query_vtable(incremental),
        default_field: crate::query_vtables::default_field::make_query_vtable(incremental),
        check_well_formed: crate::query_vtables::check_well_formed::make_query_vtable(incremental),
        enforce_impl_non_lifetime_params_are_constrained: crate::query_vtables::enforce_impl_non_lifetime_params_are_constrained::make_query_vtable(incremental),
        reachable_non_generics: crate::query_vtables::reachable_non_generics::make_query_vtable(incremental),
        is_reachable_non_generic: crate::query_vtables::is_reachable_non_generic::make_query_vtable(incremental),
        is_unreachable_local_definition: crate::query_vtables::is_unreachable_local_definition::make_query_vtable(incremental),
        upstream_monomorphizations: crate::query_vtables::upstream_monomorphizations::make_query_vtable(incremental),
        upstream_monomorphizations_for: crate::query_vtables::upstream_monomorphizations_for::make_query_vtable(incremental),
        upstream_drop_glue_for: crate::query_vtables::upstream_drop_glue_for::make_query_vtable(incremental),
        upstream_async_drop_glue_for: crate::query_vtables::upstream_async_drop_glue_for::make_query_vtable(incremental),
        foreign_modules: crate::query_vtables::foreign_modules::make_query_vtable(incremental),
        clashing_extern_declarations: crate::query_vtables::clashing_extern_declarations::make_query_vtable(incremental),
        entry_fn: crate::query_vtables::entry_fn::make_query_vtable(incremental),
        proc_macro_decls_static: crate::query_vtables::proc_macro_decls_static::make_query_vtable(incremental),
        crate_hash: crate::query_vtables::crate_hash::make_query_vtable(incremental),
        crate_host_hash: crate::query_vtables::crate_host_hash::make_query_vtable(incremental),
        extra_filename: crate::query_vtables::extra_filename::make_query_vtable(incremental),
        crate_extern_paths: crate::query_vtables::crate_extern_paths::make_query_vtable(incremental),
        implementations_of_trait: crate::query_vtables::implementations_of_trait::make_query_vtable(incremental),
        crate_incoherent_impls: crate::query_vtables::crate_incoherent_impls::make_query_vtable(incremental),
        native_library: crate::query_vtables::native_library::make_query_vtable(incremental),
        inherit_sig_for_delegation_item: crate::query_vtables::inherit_sig_for_delegation_item::make_query_vtable(incremental),
        delegation_user_specified_args: crate::query_vtables::delegation_user_specified_args::make_query_vtable(incremental),
        resolve_bound_vars: crate::query_vtables::resolve_bound_vars::make_query_vtable(incremental),
        named_variable_map: crate::query_vtables::named_variable_map::make_query_vtable(incremental),
        is_late_bound_map: crate::query_vtables::is_late_bound_map::make_query_vtable(incremental),
        object_lifetime_default: crate::query_vtables::object_lifetime_default::make_query_vtable(incremental),
        late_bound_vars_map: crate::query_vtables::late_bound_vars_map::make_query_vtable(incremental),
        opaque_captured_lifetimes: crate::query_vtables::opaque_captured_lifetimes::make_query_vtable(incremental),
        live_args_for_alias_from_outlives_bounds: crate::query_vtables::live_args_for_alias_from_outlives_bounds::make_query_vtable(incremental),
        args_known_to_outlive_alias_params: crate::query_vtables::args_known_to_outlive_alias_params::make_query_vtable(incremental),
        visibility: crate::query_vtables::visibility::make_query_vtable(incremental),
        inhabited_predicate_adt: crate::query_vtables::inhabited_predicate_adt::make_query_vtable(incremental),
        inhabited_predicate_type: crate::query_vtables::inhabited_predicate_type::make_query_vtable(incremental),
        is_opsem_inhabited_raw: crate::query_vtables::is_opsem_inhabited_raw::make_query_vtable(incremental),
        crate_dep_kind: crate::query_vtables::crate_dep_kind::make_query_vtable(incremental),
        crate_name: crate::query_vtables::crate_name::make_query_vtable(incremental),
        module_children: crate::query_vtables::module_children::make_query_vtable(incremental),
        num_extern_def_ids: crate::query_vtables::num_extern_def_ids::make_query_vtable(incremental),
        lib_features: crate::query_vtables::lib_features::make_query_vtable(incremental),
        stability_implications: crate::query_vtables::stability_implications::make_query_vtable(incremental),
        intrinsic_raw: crate::query_vtables::intrinsic_raw::make_query_vtable(incremental),
        get_lang_items: crate::query_vtables::get_lang_items::make_query_vtable(incremental),
        all_diagnostic_items: crate::query_vtables::all_diagnostic_items::make_query_vtable(incremental),
        all_canonical_symbols: crate::query_vtables::all_canonical_symbols::make_query_vtable(incremental),
        defined_lang_items: crate::query_vtables::defined_lang_items::make_query_vtable(incremental),
        diagnostic_items: crate::query_vtables::diagnostic_items::make_query_vtable(incremental),
        canonical_symbols: crate::query_vtables::canonical_symbols::make_query_vtable(incremental),
        missing_lang_items: crate::query_vtables::missing_lang_items::make_query_vtable(incremental),
        visible_parent_map: crate::query_vtables::visible_parent_map::make_query_vtable(incremental),
        trimmed_def_paths: crate::query_vtables::trimmed_def_paths::make_query_vtable(incremental),
        missing_extern_crate_item: crate::query_vtables::missing_extern_crate_item::make_query_vtable(incremental),
        used_crate_source: crate::query_vtables::used_crate_source::make_query_vtable(incremental),
        debugger_visualizers: crate::query_vtables::debugger_visualizers::make_query_vtable(incremental),
        postorder_cnums: crate::query_vtables::postorder_cnums::make_query_vtable(incremental),
        is_private_dep: crate::query_vtables::is_private_dep::make_query_vtable(incremental),
        allocator_kind: crate::query_vtables::allocator_kind::make_query_vtable(incremental),
        alloc_error_handler_kind: crate::query_vtables::alloc_error_handler_kind::make_query_vtable(incremental),
        upvars_mentioned: crate::query_vtables::upvars_mentioned::make_query_vtable(incremental),
        crates: crate::query_vtables::crates::make_query_vtable(incremental),
        used_crates: crate::query_vtables::used_crates::make_query_vtable(incremental),
        duplicate_crate_names: crate::query_vtables::duplicate_crate_names::make_query_vtable(incremental),
        traits: crate::query_vtables::traits::make_query_vtable(incremental),
        trait_impls_in_crate: crate::query_vtables::trait_impls_in_crate::make_query_vtable(incremental),
        stable_order_of_exportable_impls: crate::query_vtables::stable_order_of_exportable_impls::make_query_vtable(incremental),
        exportable_items: crate::query_vtables::exportable_items::make_query_vtable(incremental),
        exported_non_generic_symbols: crate::query_vtables::exported_non_generic_symbols::make_query_vtable(incremental),
        exported_generic_symbols: crate::query_vtables::exported_generic_symbols::make_query_vtable(incremental),
        collect_and_partition_mono_items: crate::query_vtables::collect_and_partition_mono_items::make_query_vtable(incremental),
        is_codegened_item: crate::query_vtables::is_codegened_item::make_query_vtable(incremental),
        codegen_unit: crate::query_vtables::codegen_unit::make_query_vtable(incremental),
        backend_optimization_level: crate::query_vtables::backend_optimization_level::make_query_vtable(incremental),
        output_filenames: crate::query_vtables::output_filenames::make_query_vtable(incremental),
        normalize_canonicalized_projection: crate::query_vtables::normalize_canonicalized_projection::make_query_vtable(incremental),
        normalize_canonicalized_free_alias: crate::query_vtables::normalize_canonicalized_free_alias::make_query_vtable(incremental),
        normalize_canonicalized_inherent_projection: crate::query_vtables::normalize_canonicalized_inherent_projection::make_query_vtable(incremental),
        try_normalize_generic_arg_after_erasing_regions: crate::query_vtables::try_normalize_generic_arg_after_erasing_regions::make_query_vtable(incremental),
        implied_outlives_bounds: crate::query_vtables::implied_outlives_bounds::make_query_vtable(incremental),
        dropck_outlives: crate::query_vtables::dropck_outlives::make_query_vtable(incremental),
        evaluate_obligation: crate::query_vtables::evaluate_obligation::make_query_vtable(incremental),
        type_op_ascribe_user_type: crate::query_vtables::type_op_ascribe_user_type::make_query_vtable(incremental),
        type_op_prove_predicate: crate::query_vtables::type_op_prove_predicate::make_query_vtable(incremental),
        type_op_normalize_ty: crate::query_vtables::type_op_normalize_ty::make_query_vtable(incremental),
        type_op_normalize_clause: crate::query_vtables::type_op_normalize_clause::make_query_vtable(incremental),
        type_op_normalize_poly_fn_sig: crate::query_vtables::type_op_normalize_poly_fn_sig::make_query_vtable(incremental),
        type_op_normalize_fn_sig: crate::query_vtables::type_op_normalize_fn_sig::make_query_vtable(incremental),
        instantiate_and_check_impossible_clauses: crate::query_vtables::instantiate_and_check_impossible_clauses::make_query_vtable(incremental),
        is_impossible_associated_item: crate::query_vtables::is_impossible_associated_item::make_query_vtable(incremental),
        method_autoderef_steps: crate::query_vtables::method_autoderef_steps::make_query_vtable(incremental),
        evaluate_root_goal_for_proof_tree_raw: crate::query_vtables::evaluate_root_goal_for_proof_tree_raw::make_query_vtable(incremental),
        rust_target_features: crate::query_vtables::rust_target_features::make_query_vtable(incremental),
        implied_target_features: crate::query_vtables::implied_target_features::make_query_vtable(incremental),
        features_query: crate::query_vtables::features_query::make_query_vtable(incremental),
        crate_for_resolver: crate::query_vtables::crate_for_resolver::make_query_vtable(incremental),
        resolve_instance_raw: crate::query_vtables::resolve_instance_raw::make_query_vtable(incremental),
        reveal_opaque_types_in_bounds: crate::query_vtables::reveal_opaque_types_in_bounds::make_query_vtable(incremental),
        limits: crate::query_vtables::limits::make_query_vtable(incremental),
        diagnostic_hir_wf_check: crate::query_vtables::diagnostic_hir_wf_check::make_query_vtable(incremental),
        global_backend_features: crate::query_vtables::global_backend_features::make_query_vtable(incremental),
        check_validity_requirement: crate::query_vtables::check_validity_requirement::make_query_vtable(incremental),
        compare_impl_item: crate::query_vtables::compare_impl_item::make_query_vtable(incremental),
        deduced_param_attrs: crate::query_vtables::deduced_param_attrs::make_query_vtable(incremental),
        doc_link_resolutions: crate::query_vtables::doc_link_resolutions::make_query_vtable(incremental),
        doc_link_traits_in_scope: crate::query_vtables::doc_link_traits_in_scope::make_query_vtable(incremental),
        stripped_cfg_items: crate::query_vtables::stripped_cfg_items::make_query_vtable(incremental),
        generics_require_sized_self: crate::query_vtables::generics_require_sized_self::make_query_vtable(incremental),
        cross_crate_inlinable: crate::query_vtables::cross_crate_inlinable::make_query_vtable(incremental),
        check_mono_item: crate::query_vtables::check_mono_item::make_query_vtable(incremental),
        items_of_instance: crate::query_vtables::items_of_instance::make_query_vtable(incremental),
        size_estimate: crate::query_vtables::size_estimate::make_query_vtable(incremental),
        anon_const_kind: crate::query_vtables::anon_const_kind::make_query_vtable(incremental),
        trivial_const: crate::query_vtables::trivial_const::make_query_vtable(incremental),
        sanitizer_settings_for: crate::query_vtables::sanitizer_settings_for::make_query_vtable(incremental),
        check_externally_implementable_items: crate::query_vtables::check_externally_implementable_items::make_query_vtable(incremental),
        externally_implementable_items: crate::query_vtables::externally_implementable_items::make_query_vtable(incremental),
    }
}
/// Given a filter condition (e.g. `ALL` or `CACHE_ON_DISK`), a `tcx`,
/// and a closure expression that accepts `&QueryVTable`, this macro
/// calls that closure with each query vtable that satisfies the filter
/// condition.
///
/// This needs to be a macro, because the vtables can have different
/// key/value/cache types for different queries.
///
/// This macro's argument syntax is specifically intended to look like
/// plain Rust code, so that `for_each_query_vtable!(..)` calls will be
/// formatted by rustfmt.
///
/// To avoid too much nested-macro complication, filter conditions are
/// implemented by hand as needed.
macro_rules! for_each_query_vtable {
    (ALL, $tcx : expr, $closure : expr) =>
    {{
            let tcx : rustc_middle :: ty :: TyCtxt < '_ > = $tcx; let query :
            & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.derive_macro_expansion;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trigger_delayed_bug;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.registered_attr_tools;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.registered_lint_tools;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.early_lint_checks; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.env_var_os; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.resolutions; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.resolver_for_lowering_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.index_ast; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.source_span; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lower_to_hir; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.hir_owner; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.hir_crate_items; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.hir_module_items; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.hir_owner_parent_q;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.hir_attr_map; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.const_param_default;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.const_of_item; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_of; $closure(query); let query
            : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_of_opaque; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_of_opaque_hir_typeck;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_alias_is_checked;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.collect_return_position_impl_trait_in_trait_tys;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.opaque_ty_origin; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.unsizing_params_for_adt;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = & tcx.query_system.query_vtables.analysis;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_expectations;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.generics_of; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.clauses_of; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.opaque_types_defined_by;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.nested_bodies_within;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_item_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_item_self_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.item_bounds; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.item_self_bounds; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.item_non_self_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.impl_super_outlives;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.native_libraries; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.shallow_lint_levels_on;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lint_expectations; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.skippable_lints; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.expn_that_defined; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_panic_runtime; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_representability;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_representability_adt_ty;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.params_in_repr; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.thir_body; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_keys; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_const_qualif; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_built; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.thir_abstract_const;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_drops_elaborated_and_const_checked;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_for_ctfe; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_promoted; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.closure_typeinfo; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.closure_saved_names_of_captured_variables;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_coroutine_witnesses;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_coroutine_obligations;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_potentially_region_dependent_goals;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.optimized_mir; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coverage_attr_on; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coverage_ids_info; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.promoted_mir; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.erase_and_anonymize_regions_ty;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.wasm_import_module_map;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trait_explicit_clauses_and_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_clauses_of;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inferred_outlives_of;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_super_clauses_of;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_implied_clauses_of;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_supertraits_containing_assoc_item;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.const_conditions; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.explicit_implied_const_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_param_clauses;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trait_def; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_def; $closure(query); let query
            : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_destructor; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_async_destructor;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_sizedness_constraint;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_dtorck_constraint;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.constness; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.asyncness; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_promotable_const_fn;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coroutine_by_move_body_def_id;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coroutine_kind; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coroutine_for_closure;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coroutine_hidden_types;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_variances; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.variances_of; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inferred_outlives_crate;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.associated_item_def_ids;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.associated_item; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.associated_items; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.impl_item_implementor_ids;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.associated_types_for_impl_traits_in_trait_or_impl;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.impl_trait_header; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.impl_is_fully_generic_for_reflection;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.impl_self_is_guaranteed_unsized;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inherent_impls; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.incoherent_impls; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_transmutes; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_offloads; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_unsafety; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_tail_calls; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.assumed_wf_types; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.assumed_wf_types_for_rpitit;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = & tcx.query_system.query_vtables.fn_sig;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = & tcx.query_system.query_vtables.lint_mod;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_unused_traits;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_mod_attrs; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_mod_unstable_api_usage;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_mod_privacy; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_liveness; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.live_symbols_and_ignored_derived_traits;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_mod_deathness;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_type_wf; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coerce_unsized_info;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.typeck_root; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.used_trait_imports;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.coherent_trait; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_borrowck; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_inherent_impls;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_inherent_impls_validity_check;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_inherent_impls_overlap_check;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.orphan_check_impl; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_callgraph_cyclic;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_inliner_callees;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.tag_for_variant; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.eval_to_allocation_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.eval_static_initializer;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.eval_to_const_value_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.eval_to_valtree; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.valtree_to_const_val;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lit_to_const; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_match; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.effective_visibilities;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_private_in_public;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.reachable_set; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.region_scope_tree; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.mir_shims; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.symbol_name; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.def_kind; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.def_span; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.def_ident_span; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.ty_span; $closure(query); let query
            : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lookup_stability; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lookup_const_stability;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lookup_default_body_stability;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.should_inherit_track_caller;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inherited_align; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lookup_deprecation_entry;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_doc_hidden; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_doc_notable_trait;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.attrs_for_def; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.codegen_fn_attrs; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.asm_target_features;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.fn_arg_idents; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.rendered_const; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.rendered_precise_capturing_args;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.impl_parent; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_mir_available; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.own_existential_vtable_entries;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.vtable_entries; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.first_method_vtable_slot;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.supertrait_vtable_slot;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.vtable_allocation; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.codegen_select_candidate;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.all_local_trait_impls;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.local_trait_impls; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trait_impls_of; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.specialization_graph_of;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.dyn_compatibility_violations;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_dyn_compatible; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.param_env; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.param_env_normalized_for_post_analysis;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_copy_raw; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_use_cloned_raw; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_sized_raw; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_freeze_raw; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_unsafe_unpin_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_unpin_raw; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_async_drop_raw; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.needs_drop_raw; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.needs_async_drop_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.has_significant_drop_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.has_structural_eq_impl;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_drop_tys; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_async_drop_tys;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.adt_significant_drop_tys;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.list_significant_drop_tys;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.layout_of; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.fn_abi_of_fn_ptr; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.fn_abi_of_instance_no_deduced_attrs;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.fn_abi_of_instance_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.dylib_dependency_formats;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.dependency_formats;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_compiler_builtins;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.has_global_allocator;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.has_alloc_error_handler;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.has_panic_handler; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_profiler_runtime;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.has_ffi_unwind_calls;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.required_panic_strategy;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.panic_in_drop_strategy;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_no_builtins; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.symbol_mangling_version;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.extern_crate; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.specialization_enabled_in;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.specializes; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.defaultness; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.default_field; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_well_formed; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.enforce_impl_non_lifetime_params_are_constrained;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.reachable_non_generics;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_reachable_non_generic;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_unreachable_local_definition;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.upstream_monomorphizations;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.upstream_monomorphizations_for;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.upstream_drop_glue_for;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.upstream_async_drop_glue_for;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.foreign_modules; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.clashing_extern_declarations;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = & tcx.query_system.query_vtables.entry_fn;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.proc_macro_decls_static;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_hash; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_host_hash; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.extra_filename; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_extern_paths;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.implementations_of_trait;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_incoherent_impls;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.native_library; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inherit_sig_for_delegation_item;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.delegation_user_specified_args;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.resolve_bound_vars;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.named_variable_map;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_late_bound_map; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.object_lifetime_default;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.late_bound_vars_map;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.opaque_captured_lifetimes;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.live_args_for_alias_from_outlives_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.args_known_to_outlive_alias_params;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.visibility; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inhabited_predicate_adt;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.inhabited_predicate_type;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_opsem_inhabited_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_dep_kind; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_name; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.module_children; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.num_extern_def_ids;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.lib_features; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.stability_implications;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.intrinsic_raw; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.get_lang_items; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.all_diagnostic_items;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.all_canonical_symbols;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.defined_lang_items;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.diagnostic_items; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.canonical_symbols; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.missing_lang_items;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.visible_parent_map;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trimmed_def_paths; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.missing_extern_crate_item;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.used_crate_source; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.debugger_visualizers;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.postorder_cnums; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_private_dep; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.allocator_kind; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.alloc_error_handler_kind;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.upvars_mentioned; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crates; $closure(query); let query
            : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.used_crates; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.duplicate_crate_names;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = & tcx.query_system.query_vtables.traits;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trait_impls_in_crate;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.stable_order_of_exportable_impls;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.exportable_items; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.exported_non_generic_symbols;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.exported_generic_symbols;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.collect_and_partition_mono_items;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_codegened_item; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.codegen_unit; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.backend_optimization_level;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.output_filenames; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.normalize_canonicalized_projection;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.normalize_canonicalized_free_alias;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.normalize_canonicalized_inherent_projection;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.try_normalize_generic_arg_after_erasing_regions;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.implied_outlives_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.dropck_outlives; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.evaluate_obligation;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_op_ascribe_user_type;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_op_prove_predicate;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_op_normalize_ty;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_op_normalize_clause;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_op_normalize_poly_fn_sig;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.type_op_normalize_fn_sig;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.instantiate_and_check_impossible_clauses;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.is_impossible_associated_item;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.method_autoderef_steps;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.evaluate_root_goal_for_proof_tree_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.rust_target_features;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.implied_target_features;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.features_query; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.crate_for_resolver;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.resolve_instance_raw;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.reveal_opaque_types_in_bounds;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = & tcx.query_system.query_vtables.limits;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.diagnostic_hir_wf_check;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.global_backend_features;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_validity_requirement;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.compare_impl_item; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.deduced_param_attrs;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.doc_link_resolutions;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.doc_link_traits_in_scope;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.stripped_cfg_items;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.generics_require_sized_self;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.cross_crate_inlinable;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_mono_item; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.items_of_instance; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.size_estimate; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.anon_const_kind; $closure(query);
            let query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.trivial_const; $closure(query); let
            query : & rustc_middle :: query :: QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.sanitizer_settings_for;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.check_externally_implementable_items;
            $closure(query); let query : & rustc_middle :: query ::
            QueryVTable < '_, _ > = &
            tcx.query_system.query_vtables.externally_implementable_items;
            $closure(query);
        }}; (CACHE_ON_DISK, $tcx : expr, $closure : expr) =>
    {{
            let tcx : rustc_middle :: ty :: TyCtxt < '_ > = $tcx; #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.derive_macro_expansion;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.trigger_delayed_bug;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.registered_attr_tools;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.registered_lint_tools;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.early_lint_checks;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.env_var_os; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.resolutions; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.resolver_for_lowering_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.index_ast; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.source_span; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lower_to_hir;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.hir_owner; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.hir_crate_items;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.hir_module_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.hir_owner_parent_q;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.hir_attr_map;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.const_param_default;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.const_of_item;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_of; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_of_opaque;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_of_opaque_hir_typeck;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_alias_is_checked;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.collect_return_position_impl_trait_in_trait_tys;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.opaque_ty_origin;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.unsizing_params_for_adt;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.analysis; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_expectations;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.generics_of; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.clauses_of; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.opaque_types_defined_by;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.nested_bodies_within;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.explicit_item_bounds;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.explicit_item_self_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.item_bounds; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.item_self_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.item_non_self_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.impl_super_outlives;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.native_libraries;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.shallow_lint_levels_on;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lint_expectations;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.skippable_lints;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.expn_that_defined;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_panic_runtime;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_representability;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.check_representability_adt_ty;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.params_in_repr;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.thir_body; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_keys; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_const_qualif;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_built; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.thir_abstract_const;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.mir_drops_elaborated_and_const_checked;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_for_ctfe;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_promoted;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.closure_typeinfo;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.closure_saved_names_of_captured_variables;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_coroutine_witnesses;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_coroutine_obligations;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.check_potentially_region_dependent_goals;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.optimized_mir;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coverage_attr_on;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coverage_ids_info;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.promoted_mir;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.erase_and_anonymize_regions_ty;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.wasm_import_module_map;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.trait_explicit_clauses_and_bounds;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.explicit_clauses_of;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.inferred_outlives_of;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.explicit_super_clauses_of;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.explicit_implied_clauses_of;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.explicit_supertraits_containing_assoc_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.const_conditions;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.explicit_implied_const_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_param_clauses;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.trait_def; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_def; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_destructor;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_async_destructor;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_sizedness_constraint;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_dtorck_constraint;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.constness; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.asyncness; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_promotable_const_fn;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.coroutine_by_move_body_def_id;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coroutine_kind;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coroutine_for_closure;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coroutine_hidden_types;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_variances;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.variances_of;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.inferred_outlives_crate;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.associated_item_def_ids;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.associated_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.associated_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.impl_item_implementor_ids;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.associated_types_for_impl_traits_in_trait_or_impl;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.impl_trait_header;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.impl_is_fully_generic_for_reflection;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.impl_self_is_guaranteed_unsized;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.inherent_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.incoherent_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_transmutes;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_offloads;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_unsafety;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_tail_calls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.assumed_wf_types;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.assumed_wf_types_for_rpitit;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.fn_sig; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lint_mod; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_unused_traits;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_mod_attrs;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_mod_unstable_api_usage;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_mod_privacy;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_liveness;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.live_symbols_and_ignored_derived_traits;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_mod_deathness;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_type_wf;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coerce_unsized_info;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.typeck_root; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.used_trait_imports;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.coherent_trait;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_borrowck;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_inherent_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.crate_inherent_impls_validity_check;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.crate_inherent_impls_overlap_check;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.orphan_check_impl;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_callgraph_cyclic;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_inliner_callees;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.tag_for_variant;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.eval_to_allocation_raw;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.eval_static_initializer;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.eval_to_const_value_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.eval_to_valtree;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.valtree_to_const_val;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lit_to_const;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_match; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.effective_visibilities;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_private_in_public;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.reachable_set;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.region_scope_tree;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.mir_shims; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.symbol_name; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.def_kind; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.def_span; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.def_ident_span;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.ty_span; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lookup_stability;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lookup_const_stability;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.lookup_default_body_stability;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.should_inherit_track_caller;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.inherited_align;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lookup_deprecation_entry;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_doc_hidden;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_doc_notable_trait;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.attrs_for_def;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.codegen_fn_attrs;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.asm_target_features;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.fn_arg_idents;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.rendered_const;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.rendered_precise_capturing_args;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.impl_parent; $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_mir_available;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.own_existential_vtable_entries;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.vtable_entries;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.first_method_vtable_slot;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.supertrait_vtable_slot;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.vtable_allocation;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.codegen_select_candidate;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.all_local_trait_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.local_trait_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.trait_impls_of;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.specialization_graph_of;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.dyn_compatibility_violations;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_dyn_compatible;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.param_env; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.param_env_normalized_for_post_analysis;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_copy_raw; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_use_cloned_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_sized_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_freeze_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_unsafe_unpin_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_unpin_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_async_drop_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.needs_drop_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.needs_async_drop_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.has_significant_drop_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.has_structural_eq_impl;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_drop_tys;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_async_drop_tys;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.adt_significant_drop_tys;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.list_significant_drop_tys;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.layout_of; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.fn_abi_of_fn_ptr;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.fn_abi_of_instance_no_deduced_attrs;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.fn_abi_of_instance_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.dylib_dependency_formats;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.dependency_formats;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_compiler_builtins;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.has_global_allocator;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.has_alloc_error_handler;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.has_panic_handler;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_profiler_runtime;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.has_ffi_unwind_calls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.required_panic_strategy;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.panic_in_drop_strategy;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_no_builtins;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.symbol_mangling_version;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.extern_crate;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.specialization_enabled_in;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.specializes; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.defaultness; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.default_field;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_well_formed;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.enforce_impl_non_lifetime_params_are_constrained;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.reachable_non_generics;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_reachable_non_generic;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.is_unreachable_local_definition;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.upstream_monomorphizations;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.upstream_monomorphizations_for;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.upstream_drop_glue_for;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.upstream_async_drop_glue_for;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.foreign_modules;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.clashing_extern_declarations;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.entry_fn; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.proc_macro_decls_static;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_hash; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_host_hash;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.extra_filename;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_extern_paths;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.implementations_of_trait;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_incoherent_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.native_library;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.inherit_sig_for_delegation_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.delegation_user_specified_args;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.resolve_bound_vars;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.named_variable_map;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_late_bound_map;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.object_lifetime_default;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.late_bound_vars_map;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.opaque_captured_lifetimes;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.live_args_for_alias_from_outlives_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.args_known_to_outlive_alias_params;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.visibility; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.inhabited_predicate_adt;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.inhabited_predicate_type;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_opsem_inhabited_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_dep_kind;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_name; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.module_children;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.num_extern_def_ids;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.lib_features;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.stability_implications;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.intrinsic_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.get_lang_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.all_diagnostic_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.all_canonical_symbols;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.defined_lang_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.diagnostic_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.canonical_symbols;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.missing_lang_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.visible_parent_map;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.trimmed_def_paths;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.missing_extern_crate_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.used_crate_source;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.debugger_visualizers;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.postorder_cnums;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_private_dep;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.allocator_kind;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.alloc_error_handler_kind;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.upvars_mentioned;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crates; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.used_crates; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.duplicate_crate_names;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.traits; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.trait_impls_in_crate;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.stable_order_of_exportable_impls;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.exportable_items;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.exported_non_generic_symbols;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.exported_generic_symbols;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.collect_and_partition_mono_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.is_codegened_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.codegen_unit;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.backend_optimization_level;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.output_filenames;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.normalize_canonicalized_projection;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.normalize_canonicalized_free_alias;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.normalize_canonicalized_inherent_projection;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.try_normalize_generic_arg_after_erasing_regions;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.implied_outlives_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.dropck_outlives;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.evaluate_obligation;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_op_ascribe_user_type;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_op_prove_predicate;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_op_normalize_ty;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_op_normalize_clause;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.type_op_normalize_poly_fn_sig;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.type_op_normalize_fn_sig;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.instantiate_and_check_impossible_clauses;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.is_impossible_associated_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.method_autoderef_steps;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.evaluate_root_goal_for_proof_tree_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.rust_target_features;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.implied_target_features;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.features_query;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.crate_for_resolver;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.resolve_instance_raw;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.reveal_opaque_types_in_bounds;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.limits; $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.diagnostic_hir_wf_check;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.global_backend_features;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_validity_requirement;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.compare_impl_item;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.deduced_param_attrs;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.doc_link_resolutions;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.doc_link_traits_in_scope;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.stripped_cfg_items;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.generics_require_sized_self;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.cross_crate_inlinable;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.check_mono_item;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.items_of_instance;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.size_estimate;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.anon_const_kind;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.trivial_const;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                & tcx.query_system.query_vtables.sanitizer_settings_for;
                $closure(query);
            } #[cfg(false)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.check_externally_implementable_items;
                $closure(query);
            } #[cfg(true)]
            {
                let query : & rustc_middle :: query :: QueryVTable < '_, _ > =
                &
                tcx.query_system.query_vtables.externally_implementable_items;
                $closure(query);
            }
        }}
}
pub(crate) use for_each_query_vtable;rustc_middle::queries::rustc_with_all_queries! { define_queries! }