Skip to main content

rustc_query_impl/
query_impl.rs

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