Skip to main content

rustc_middle/dep_graph/
dep_node.rs

1use rustc_data_structures::fingerprint::Fingerprint;
2use rustc_hir::def_id::{CrateNum, DefId, LOCAL_CRATE, LocalDefId, LocalModDefId, ModDefId};
3use rustc_hir::definitions::DefPathHash;
4use rustc_hir::{HirId, ItemLocalId, OwnerId};
5pub use rustc_query_system::dep_graph::DepNode;
6use rustc_query_system::dep_graph::FingerprintStyle;
7pub use rustc_query_system::dep_graph::dep_node::DepKind;
8pub(crate) use rustc_query_system::dep_graph::{DepContext, DepNodeParams};
9use rustc_span::Symbol;
10
11use crate::mir::mono::MonoItem;
12use crate::ty::TyCtxt;
13
14macro_rules! define_dep_nodes {
15    (
16        $(
17            $(#[$attr:meta])*
18            [$($modifiers:tt)*] fn $variant:ident($($K:tt)*) -> $V:ty,
19        )*
20    ) => {
21
22        #[macro_export]
23        macro_rules! make_dep_kind_array {
24            ($mod:ident) => {[ $($mod::$variant()),* ]};
25        }
26
27        /// This enum serves as an index into arrays built by `make_dep_kind_array`.
28        // This enum has more than u8::MAX variants so we need some kind of multi-byte
29        // encoding. The derived Encodable/Decodable uses leb128 encoding which is
30        // dense when only considering this enum. But DepKind is encoded in a larger
31        // struct, and there we can take advantage of the unused bits in the u16.
32        #[allow(non_camel_case_types)]
33        #[repr(u16)] // Must be kept in sync with the inner type of `DepKind`.
34        enum DepKindDefs {
35            $( $( #[$attr] )* $variant),*
36        }
37
38        #[allow(non_upper_case_globals)]
39        pub mod dep_kinds {
40            use super::*;
41
42            $(
43                // The `as u16` cast must be kept in sync with the inner type of `DepKind`.
44                pub const $variant: DepKind = DepKind::new(DepKindDefs::$variant as u16);
45            )*
46        }
47
48        // This checks that the discriminants of the variants have been assigned consecutively
49        // from 0 so that they can be used as a dense index.
50        pub(crate) const DEP_KIND_VARIANTS: u16 = {
51            let deps = &[$(dep_kinds::$variant,)*];
52            let mut i = 0;
53            while i < deps.len() {
54                if i != deps[i].as_usize() {
55                    panic!();
56                }
57                i += 1;
58            }
59            deps.len() as u16
60        };
61
62        /// List containing the name of each dep kind as a static string,
63        /// indexable by `DepKind`.
64        pub(crate) const DEP_KIND_NAMES: &[&str] = &[
65            $( self::label_strs::$variant, )*
66        ];
67
68        pub(super) fn dep_kind_from_label_string(label: &str) -> Result<DepKind, ()> {
69            match label {
70                $( self::label_strs::$variant => Ok(self::dep_kinds::$variant), )*
71                _ => Err(()),
72            }
73        }
74
75        /// Contains variant => str representations for constructing
76        /// DepNode groups for tests.
77        #[expect(non_upper_case_globals)]
78        pub mod label_strs {
79            $( pub const $variant: &str = stringify!($variant); )*
80        }
81    };
82}
83
84// Create various data structures for each query, and also for a few things
85// that aren't queries.
86#[macro_export]
macro_rules! make_dep_kind_array {
    ($r#mod : ident) =>
    {[$r#mod :: Null (), $r#mod :: Red (), $r#mod :: SideEffect (), $r#mod ::
        AnonZeroDeps (), $r#mod :: TraitSelect (), $r#mod ::
        CompileCodegenUnit (), $r#mod :: CompileMonoItem (), $r#mod ::
        Metadata (), $r#mod :: derive_macro_expansion (), $r#mod ::
        trigger_delayed_bug (), $r#mod :: registered_tools (), $r#mod ::
        early_lint_checks (), $r#mod :: env_var_os (), $r#mod :: resolutions
        (), $r#mod :: resolver_for_lowering_raw (), $r#mod :: source_span (),
        $r#mod :: hir_crate (), $r#mod :: hir_crate_items (), $r#mod ::
        hir_module_items (), $r#mod :: local_def_id_to_hir_id (), $r#mod ::
        hir_owner_parent_q (), $r#mod :: opt_hir_owner_nodes (), $r#mod ::
        hir_attr_map (), $r#mod :: opt_ast_lowering_delayed_lints (), $r#mod
        :: const_param_default (), $r#mod :: const_of_item (), $r#mod ::
        type_of (), $r#mod :: type_of_opaque (), $r#mod ::
        type_of_opaque_hir_typeck (), $r#mod :: type_alias_is_lazy (), $r#mod
        :: collect_return_position_impl_trait_in_trait_tys (), $r#mod ::
        opaque_ty_origin (), $r#mod :: unsizing_params_for_adt (), $r#mod ::
        analysis (), $r#mod :: check_expectations (), $r#mod :: generics_of
        (), $r#mod :: predicates_of (), $r#mod :: opaque_types_defined_by (),
        $r#mod :: nested_bodies_within (), $r#mod :: explicit_item_bounds (),
        $r#mod :: explicit_item_self_bounds (), $r#mod :: item_bounds (),
        $r#mod :: item_self_bounds (), $r#mod :: item_non_self_bounds (),
        $r#mod :: impl_super_outlives (), $r#mod :: native_libraries (),
        $r#mod :: shallow_lint_levels_on (), $r#mod :: lint_expectations (),
        $r#mod :: lints_that_dont_need_to_run (), $r#mod :: expn_that_defined
        (), $r#mod :: is_panic_runtime (), $r#mod :: representability (),
        $r#mod :: representability_adt_ty (), $r#mod :: params_in_repr (),
        $r#mod :: thir_body (), $r#mod :: mir_keys (), $r#mod ::
        mir_const_qualif (), $r#mod :: mir_built (), $r#mod ::
        thir_abstract_const (), $r#mod ::
        mir_drops_elaborated_and_const_checked (), $r#mod :: mir_for_ctfe (),
        $r#mod :: mir_promoted (), $r#mod :: closure_typeinfo (), $r#mod ::
        closure_saved_names_of_captured_variables (), $r#mod ::
        mir_coroutine_witnesses (), $r#mod :: check_coroutine_obligations (),
        $r#mod :: check_potentially_region_dependent_goals (), $r#mod ::
        optimized_mir (), $r#mod :: coverage_attr_on (), $r#mod ::
        coverage_ids_info (), $r#mod :: promoted_mir (), $r#mod ::
        erase_and_anonymize_regions_ty (), $r#mod :: wasm_import_module_map
        (), $r#mod :: trait_explicit_predicates_and_bounds (), $r#mod ::
        explicit_predicates_of (), $r#mod :: inferred_outlives_of (), $r#mod
        :: explicit_super_predicates_of (), $r#mod ::
        explicit_implied_predicates_of (), $r#mod ::
        explicit_supertraits_containing_assoc_item (), $r#mod ::
        const_conditions (), $r#mod :: explicit_implied_const_bounds (),
        $r#mod :: type_param_predicates (), $r#mod :: trait_def (), $r#mod ::
        adt_def (), $r#mod :: adt_destructor (), $r#mod ::
        adt_async_destructor (), $r#mod :: adt_sizedness_constraint (), $r#mod
        :: adt_dtorck_constraint (), $r#mod :: constness (), $r#mod ::
        asyncness (), $r#mod :: is_promotable_const_fn (), $r#mod ::
        coroutine_by_move_body_def_id (), $r#mod :: coroutine_kind (), $r#mod
        :: coroutine_for_closure (), $r#mod :: coroutine_hidden_types (),
        $r#mod :: crate_variances (), $r#mod :: variances_of (), $r#mod ::
        inferred_outlives_crate (), $r#mod :: associated_item_def_ids (),
        $r#mod :: associated_item (), $r#mod :: associated_items (), $r#mod ::
        impl_item_implementor_ids (), $r#mod ::
        associated_types_for_impl_traits_in_trait_or_impl (), $r#mod ::
        impl_trait_header (), $r#mod :: impl_self_is_guaranteed_unsized (),
        $r#mod :: inherent_impls (), $r#mod :: incoherent_impls (), $r#mod ::
        check_transmutes (), $r#mod :: check_unsafety (), $r#mod ::
        check_tail_calls (), $r#mod :: assumed_wf_types (), $r#mod ::
        assumed_wf_types_for_rpitit (), $r#mod :: fn_sig (), $r#mod ::
        lint_mod (), $r#mod :: check_unused_traits (), $r#mod ::
        check_mod_attrs (), $r#mod :: check_mod_unstable_api_usage (), $r#mod
        :: check_mod_privacy (), $r#mod :: check_liveness (), $r#mod ::
        live_symbols_and_ignored_derived_traits (), $r#mod ::
        check_mod_deathness (), $r#mod :: check_type_wf (), $r#mod ::
        coerce_unsized_info (), $r#mod :: typeck (), $r#mod ::
        used_trait_imports (), $r#mod :: coherent_trait (), $r#mod ::
        mir_borrowck (), $r#mod :: crate_inherent_impls (), $r#mod ::
        crate_inherent_impls_validity_check (), $r#mod ::
        crate_inherent_impls_overlap_check (), $r#mod :: orphan_check_impl (),
        $r#mod :: mir_callgraph_cyclic (), $r#mod :: mir_inliner_callees (),
        $r#mod :: tag_for_variant (), $r#mod :: eval_to_allocation_raw (),
        $r#mod :: eval_static_initializer (), $r#mod ::
        eval_to_const_value_raw (), $r#mod :: eval_to_valtree (), $r#mod ::
        valtree_to_const_val (), $r#mod :: lit_to_const (), $r#mod ::
        check_match (), $r#mod :: effective_visibilities (), $r#mod ::
        check_private_in_public (), $r#mod :: reachable_set (), $r#mod ::
        region_scope_tree (), $r#mod :: mir_shims (), $r#mod :: symbol_name
        (), $r#mod :: def_kind (), $r#mod :: def_span (), $r#mod ::
        def_ident_span (), $r#mod :: ty_span (), $r#mod :: lookup_stability
        (), $r#mod :: lookup_const_stability (), $r#mod ::
        lookup_default_body_stability (), $r#mod ::
        should_inherit_track_caller (), $r#mod :: inherited_align (), $r#mod
        :: lookup_deprecation_entry (), $r#mod :: is_doc_hidden (), $r#mod ::
        is_doc_notable_trait (), $r#mod :: attrs_for_def (), $r#mod ::
        codegen_fn_attrs (), $r#mod :: asm_target_features (), $r#mod ::
        fn_arg_idents (), $r#mod :: rendered_const (), $r#mod ::
        rendered_precise_capturing_args (), $r#mod :: impl_parent (), $r#mod
        :: is_ctfe_mir_available (), $r#mod :: is_mir_available (), $r#mod ::
        own_existential_vtable_entries (), $r#mod :: vtable_entries (), $r#mod
        :: first_method_vtable_slot (), $r#mod :: supertrait_vtable_slot (),
        $r#mod :: vtable_allocation (), $r#mod :: codegen_select_candidate (),
        $r#mod :: all_local_trait_impls (), $r#mod :: local_trait_impls (),
        $r#mod :: trait_impls_of (), $r#mod :: specialization_graph_of (),
        $r#mod :: dyn_compatibility_violations (), $r#mod :: is_dyn_compatible
        (), $r#mod :: param_env (), $r#mod ::
        typing_env_normalized_for_post_analysis (), $r#mod :: is_copy_raw (),
        $r#mod :: is_use_cloned_raw (), $r#mod :: is_sized_raw (), $r#mod ::
        is_freeze_raw (), $r#mod :: is_unpin_raw (), $r#mod ::
        is_async_drop_raw (), $r#mod :: needs_drop_raw (), $r#mod ::
        needs_async_drop_raw (), $r#mod :: has_significant_drop_raw (), $r#mod
        :: has_structural_eq_impl (), $r#mod :: adt_drop_tys (), $r#mod ::
        adt_async_drop_tys (), $r#mod :: adt_significant_drop_tys (), $r#mod
        :: list_significant_drop_tys (), $r#mod :: layout_of (), $r#mod ::
        fn_abi_of_fn_ptr (), $r#mod :: fn_abi_of_instance (), $r#mod ::
        dylib_dependency_formats (), $r#mod :: dependency_formats (), $r#mod
        :: is_compiler_builtins (), $r#mod :: has_global_allocator (), $r#mod
        :: has_alloc_error_handler (), $r#mod :: has_panic_handler (), $r#mod
        :: is_profiler_runtime (), $r#mod :: has_ffi_unwind_calls (), $r#mod
        :: required_panic_strategy (), $r#mod :: panic_in_drop_strategy (),
        $r#mod :: is_no_builtins (), $r#mod :: symbol_mangling_version (),
        $r#mod :: extern_crate (), $r#mod :: specialization_enabled_in (),
        $r#mod :: specializes (), $r#mod :: in_scope_traits_map (), $r#mod ::
        defaultness (), $r#mod :: default_field (), $r#mod ::
        check_well_formed (), $r#mod ::
        enforce_impl_non_lifetime_params_are_constrained (), $r#mod ::
        reachable_non_generics (), $r#mod :: is_reachable_non_generic (),
        $r#mod :: is_unreachable_local_definition (), $r#mod ::
        upstream_monomorphizations (), $r#mod ::
        upstream_monomorphizations_for (), $r#mod :: upstream_drop_glue_for
        (), $r#mod :: upstream_async_drop_glue_for (), $r#mod ::
        foreign_modules (), $r#mod :: clashing_extern_declarations (), $r#mod
        :: entry_fn (), $r#mod :: proc_macro_decls_static (), $r#mod ::
        crate_hash (), $r#mod :: crate_host_hash (), $r#mod :: extra_filename
        (), $r#mod :: crate_extern_paths (), $r#mod ::
        implementations_of_trait (), $r#mod :: crate_incoherent_impls (),
        $r#mod :: native_library (), $r#mod :: inherit_sig_for_delegation_item
        (), $r#mod :: resolve_bound_vars (), $r#mod :: named_variable_map (),
        $r#mod :: is_late_bound_map (), $r#mod :: object_lifetime_default (),
        $r#mod :: late_bound_vars_map (), $r#mod :: opaque_captured_lifetimes
        (), $r#mod :: visibility (), $r#mod :: inhabited_predicate_adt (),
        $r#mod :: inhabited_predicate_type (), $r#mod :: dep_kind (), $r#mod
        :: crate_name (), $r#mod :: module_children (), $r#mod ::
        num_extern_def_ids (), $r#mod :: lib_features (), $r#mod ::
        stability_implications (), $r#mod :: intrinsic_raw (), $r#mod ::
        get_lang_items (), $r#mod :: all_diagnostic_items (), $r#mod ::
        defined_lang_items (), $r#mod :: diagnostic_items (), $r#mod ::
        missing_lang_items (), $r#mod :: visible_parent_map (), $r#mod ::
        trimmed_def_paths (), $r#mod :: missing_extern_crate_item (), $r#mod
        :: used_crate_source (), $r#mod :: debugger_visualizers (), $r#mod ::
        postorder_cnums (), $r#mod :: is_private_dep (), $r#mod ::
        allocator_kind (), $r#mod :: alloc_error_handler_kind (), $r#mod ::
        upvars_mentioned (), $r#mod :: crates (), $r#mod :: used_crates (),
        $r#mod :: duplicate_crate_names (), $r#mod :: traits (), $r#mod ::
        trait_impls_in_crate (), $r#mod :: stable_order_of_exportable_impls
        (), $r#mod :: exportable_items (), $r#mod ::
        exported_non_generic_symbols (), $r#mod :: exported_generic_symbols
        (), $r#mod :: collect_and_partition_mono_items (), $r#mod ::
        is_codegened_item (), $r#mod :: codegen_unit (), $r#mod ::
        backend_optimization_level (), $r#mod :: output_filenames (), $r#mod
        :: normalize_canonicalized_projection (), $r#mod ::
        normalize_canonicalized_free_alias (), $r#mod ::
        normalize_canonicalized_inherent_projection (), $r#mod ::
        try_normalize_generic_arg_after_erasing_regions (), $r#mod ::
        implied_outlives_bounds (), $r#mod :: dropck_outlives (), $r#mod ::
        evaluate_obligation (), $r#mod :: type_op_ascribe_user_type (), $r#mod
        :: type_op_prove_predicate (), $r#mod :: type_op_normalize_ty (),
        $r#mod :: type_op_normalize_clause (), $r#mod ::
        type_op_normalize_poly_fn_sig (), $r#mod :: type_op_normalize_fn_sig
        (), $r#mod :: instantiate_and_check_impossible_predicates (), $r#mod
        :: is_impossible_associated_item (), $r#mod :: method_autoderef_steps
        (), $r#mod :: evaluate_root_goal_for_proof_tree_raw (), $r#mod ::
        rust_target_features (), $r#mod :: implied_target_features (), $r#mod
        :: features_query (), $r#mod :: crate_for_resolver (), $r#mod ::
        resolve_instance_raw (), $r#mod :: reveal_opaque_types_in_bounds (),
        $r#mod :: limits (), $r#mod :: diagnostic_hir_wf_check (), $r#mod ::
        global_backend_features (), $r#mod :: check_validity_requirement (),
        $r#mod :: compare_impl_item (), $r#mod :: deduced_param_attrs (),
        $r#mod :: doc_link_resolutions (), $r#mod :: doc_link_traits_in_scope
        (), $r#mod :: stripped_cfg_items (), $r#mod ::
        generics_require_sized_self (), $r#mod :: cross_crate_inlinable (),
        $r#mod :: check_mono_item (), $r#mod :: skip_move_check_fns (), $r#mod
        :: items_of_instance (), $r#mod :: size_estimate (), $r#mod ::
        anon_const_kind (), $r#mod :: trivial_const (), $r#mod ::
        sanitizer_settings_for (), $r#mod ::
        check_externally_implementable_items (), $r#mod ::
        externally_implementable_items ()]};
}
/// This enum serves as an index into arrays built by `make_dep_kind_array`.
#[allow(non_camel_case_types)]
#[repr(u16)]
enum DepKindDefs {

    #[doc = r" We use this for most things when incr. comp. is turned off."]
    Null,

    #[doc = r" We use this to create a forever-red node."]
    Red,
    SideEffect,
    AnonZeroDeps,
    TraitSelect,
    CompileCodegenUnit,
    CompileMonoItem,
    Metadata,

    #[doc =
    " Caches the expansion of a derive proc macro, e.g. `#[derive(Serialize)]`."]
    #[doc = " The key is:"]
    #[doc = " - A unique key corresponding to the invocation of a macro."]
    #[doc = " - Token stream which serves as an input to the macro."]
    #[doc = ""]
    #[doc = " The output is the token stream generated by the proc macro."]
    derive_macro_expansion,

    #[doc =
    " This exists purely for testing the interactions between delayed bugs and incremental."]
    trigger_delayed_bug,

    #[doc =
    " Collects the list of all tools registered using `#![register_tool]`."]
    registered_tools,

    #[doc =
    "[query description - consider adding a doc-comment!] perform lints prior to AST lowering"]
    early_lint_checks,

    #[doc = " Tracked access to environment variables."]
    #[doc = ""]
    #[doc =
    " Useful for the implementation of `std::env!`, `proc-macro`s change"]
    #[doc =
    " detection and other changes in the compiler\'s behaviour that is easier"]
    #[doc = " to control with an environment variable than a flag."]
    #[doc = ""]
    #[doc = " NOTE: This currently does not work with dependency info in the"]
    #[doc =
    " analysis, codegen and linking passes, place extra code at the top of"]
    #[doc = " `rustc_interface::passes::write_dep_info` to make that work."]
    env_var_os,

    #[doc =
    "[query description - consider adding a doc-comment!] getting the resolver outputs"]
    resolutions,

    #[doc =
    "[query description - consider adding a doc-comment!] getting the resolver for lowering"]
    resolver_for_lowering_raw,

    #[doc = " Return the span for a definition."]
    #[doc = ""]
    #[doc =
    " Contrary to `def_span` below, this query returns the full absolute span of the definition."]
    #[doc =
    " This span is meant for dep-tracking rather than diagnostics. It should not be used outside"]
    #[doc = " of rustc_middle::hir::source_map."]
    source_span,

    #[doc =
    " Represents crate as a whole (as distinct from the top-level crate module)."]
    #[doc = ""]
    #[doc =
    " If you call `tcx.hir_crate(())` we will have to assume that any change"]
    #[doc =
    " means that you need to be recompiled. This is because the `hir_crate`"]
    #[doc =
    " query gives you access to all other items. To avoid this fate, do not"]
    #[doc = " call `tcx.hir_crate(())`; instead, prefer wrappers like"]
    #[doc = " [`TyCtxt::hir_visit_all_item_likes_in_crate`]."]
    hir_crate,

    #[doc = " All items in the crate."]
    hir_crate_items,

    #[doc = " The items in a module."]
    #[doc = ""]
    #[doc =
    " This can be conveniently accessed by `tcx.hir_visit_item_likes_in_module`."]
    #[doc = " Avoid calling this query directly."]
    hir_module_items,

    #[doc = " Returns HIR ID for the given `LocalDefId`."]
    local_def_id_to_hir_id,

    #[doc =
    " Gives access to the HIR node\'s parent for the HIR owner `key`."]
    #[doc = ""]
    #[doc = " This can be conveniently accessed by `tcx.hir_*` methods."]
    #[doc = " Avoid calling this query directly."]
    hir_owner_parent_q,

    #[doc =
    " Gives access to the HIR nodes and bodies inside `key` if it\'s a HIR owner."]
    #[doc = ""]
    #[doc = " This can be conveniently accessed by `tcx.hir_*` methods."]
    #[doc = " Avoid calling this query directly."]
    opt_hir_owner_nodes,

    #[doc = " Gives access to the HIR attributes inside the HIR owner `key`."]
    #[doc = ""]
    #[doc = " This can be conveniently accessed by `tcx.hir_*` methods."]
    #[doc = " Avoid calling this query directly."]
    hir_attr_map,

    #[doc = " Gives access to lints emitted during ast lowering."]
    #[doc = ""]
    #[doc = " This can be conveniently accessed by `tcx.hir_*` methods."]
    #[doc = " Avoid calling this query directly."]
    opt_ast_lowering_delayed_lints,

    #[doc =
    " Returns the *default* of the const pararameter given by `DefId`."]
    #[doc = ""]
    #[doc =
    " E.g., given `struct Ty<const N: usize = 3>;` this returns `3` for `N`."]
    const_param_default,

    #[doc =
    " Returns the const of the RHS of a (free or assoc) const item, if it is a `#[type_const]`."]
    #[doc = ""]
    #[doc =
    " When a const item is used in a type-level expression, like in equality for an assoc const"]
    #[doc =
    " projection, this allows us to retrieve the typesystem-appropriate representation of the"]
    #[doc = " const value."]
    #[doc = ""]
    #[doc =
    " This query will ICE if given a const that is not marked with `#[type_const]`."]
    const_of_item,

    #[doc = " Returns the *type* of the definition given by `DefId`."]
    #[doc = ""]
    #[doc =
    " For type aliases (whether eager or lazy) and associated types, this returns"]
    #[doc =
    " the underlying aliased type (not the corresponding [alias type])."]
    #[doc = ""]
    #[doc =
    " For opaque types, this returns and thus reveals the hidden type! If you"]
    #[doc = " want to detect cycle errors use `type_of_opaque` instead."]
    #[doc = ""]
    #[doc =
    " To clarify, for type definitions, this does *not* return the \"type of a type\""]
    #[doc =
    " (aka *kind* or *sort*) in the type-theoretical sense! It merely returns"]
    #[doc = " the type primarily *associated with* it."]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc =
    " This query will panic if the given definition doesn\'t (and can\'t"]
    #[doc = " conceptually) have an (underlying) type."]
    #[doc = ""]
    #[doc = " [alias type]: rustc_middle::ty::AliasTy"]
    type_of,

    #[doc =
    " Returns the *hidden type* of the opaque type given by `DefId` unless a cycle occurred."]
    #[doc = ""]
    #[doc =
    " This is a specialized instance of [`Self::type_of`] that detects query cycles."]
    #[doc =
    " Unless `CyclePlaceholder` needs to be handled separately, call [`Self::type_of`] instead."]
    #[doc =
    " This is used to improve the error message in cases where revealing the hidden type"]
    #[doc = " for auto-trait leakage cycles."]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc =
    " This query will panic if the given definition is not an opaque type."]
    type_of_opaque,

    #[doc =
    "[query description - consider adding a doc-comment!] computing type of opaque `{path}` via HIR typeck"]
    type_of_opaque_hir_typeck,

    #[doc = " Returns whether the type alias given by `DefId` is lazy."]
    #[doc = ""]
    #[doc =
    " I.e., if the type alias expands / ought to expand to a [free] [alias type]"]
    #[doc = " instead of the underlying aliased type."]
    #[doc = ""]
    #[doc =
    " Relevant for features `lazy_type_alias` and `type_alias_impl_trait`."]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc =
    " This query *may* panic if the given definition is not a type alias."]
    #[doc = ""]
    #[doc = " [free]: rustc_middle::ty::Free"]
    #[doc = " [alias type]: rustc_middle::ty::AliasTy"]
    type_alias_is_lazy,

    #[doc =
    "[query description - consider adding a doc-comment!] comparing an impl and trait method signature, inferring any hidden `impl Trait` types in the process"]
    collect_return_position_impl_trait_in_trait_tys,

    #[doc =
    "[query description - consider adding a doc-comment!] determine where the opaque originates from"]
    opaque_ty_origin,

    #[doc =
    "[query description - consider adding a doc-comment!] determining what parameters of  `tcx.def_path_str(key)`  can participate in unsizing"]
    unsizing_params_for_adt,

    #[doc =
    " The root query triggering all analysis passes like typeck or borrowck."]
    analysis,

    #[doc =
    " This query checks the fulfillment of collected lint expectations."]
    #[doc =
    " All lint emitting queries have to be done before this is executed"]
    #[doc = " to ensure that all expectations can be fulfilled."]
    #[doc = ""]
    #[doc =
    " This is an extra query to enable other drivers (like rustdoc) to"]
    #[doc =
    " only execute a small subset of the `analysis` query, while allowing"]
    #[doc =
    " lints to be expected. In rustc, this query will be executed as part of"]
    #[doc =
    " the `analysis` query and doesn\'t have to be called a second time."]
    #[doc = ""]
    #[doc =
    " Tools can additionally pass in a tool filter. That will restrict the"]
    #[doc =
    " expectations to only trigger for lints starting with the listed tool"]
    #[doc =
    " name. This is useful for cases were not all linting code from rustc"]
    #[doc =
    " was called. With the default `None` all registered lints will also"]
    #[doc = " be checked for expectation fulfillment."]
    check_expectations,

    #[doc = " Returns the *generics* of the definition given by `DefId`."]
    generics_of,

    #[doc =
    " Returns the (elaborated) *predicates* of the definition given by `DefId`"]
    #[doc =
    " that must be proven true at usage sites (and which can be assumed at definition site)."]
    #[doc = ""]
    #[doc =
    " This is almost always *the* \"predicates query\" that you want."]
    #[doc = ""]
    #[doc =
    " **Tip**: You can use `#[rustc_dump_predicates]` on an item to basically print"]
    #[doc =
    " the result of this query for use in UI tests or for debugging purposes."]
    predicates_of,

    #[doc =
    "[query description - consider adding a doc-comment!] computing the opaque types defined by  `tcx.def_path_str(key.to_def_id())` "]
    opaque_types_defined_by,

    #[doc =
    " A list of all bodies inside of `key`, nested bodies are always stored"]
    #[doc = " before their parent."]
    nested_bodies_within,

    #[doc =
    " Returns the explicitly user-written *bounds* on the associated or opaque type given by `DefId`"]
    #[doc =
    " that must be proven true at definition site (and which can be assumed at usage sites)."]
    #[doc = ""]
    #[doc =
    " For associated types, these must be satisfied for an implementation"]
    #[doc =
    " to be well-formed, and for opaque types, these are required to be"]
    #[doc = " satisfied by the hidden type of the opaque."]
    #[doc = ""]
    #[doc =
    " Bounds from the parent (e.g. with nested `impl Trait`) are not included."]
    #[doc = ""]
    #[doc =
    " Syntactially, these are the bounds written on associated types in trait"]
    #[doc = " definitions, or those after the `impl` keyword for an opaque:"]
    #[doc = ""]
    #[doc = " ```ignore (illustrative)"]
    #[doc = " trait Trait { type X: Bound + \'lt; }"]
    #[doc = " //                    ^^^^^^^^^^^"]
    #[doc = " fn function() -> impl Debug + Display { /*...*/ }"]
    #[doc = " //                    ^^^^^^^^^^^^^^^"]
    #[doc = " ```"]
    explicit_item_bounds,

    #[doc =
    " Returns the explicitly user-written *bounds* that share the `Self` type of the item."]
    #[doc = ""]
    #[doc =
    " These are a subset of the [explicit item bounds] that may explicitly be used for things"]
    #[doc = " like closure signature deduction."]
    #[doc = ""]
    #[doc = " [explicit item bounds]: Self::explicit_item_bounds"]
    explicit_item_self_bounds,

    #[doc =
    " Returns the (elaborated) *bounds* on the associated or opaque type given by `DefId`"]
    #[doc =
    " that must be proven true at definition site (and which can be assumed at usage sites)."]
    #[doc = ""]
    #[doc =
    " Bounds from the parent (e.g. with nested `impl Trait`) are not included."]
    #[doc = ""]
    #[doc =
    " **Tip**: You can use `#[rustc_dump_item_bounds]` on an item to basically print"]
    #[doc =
    " the result of this query for use in UI tests or for debugging purposes."]
    #[doc = ""]
    #[doc = " # Examples"]
    #[doc = ""]
    #[doc = " ```"]
    #[doc = " trait Trait { type Assoc: Eq + ?Sized; }"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc =
    " While [`Self::explicit_item_bounds`] returns `[<Self as Trait>::Assoc: Eq]`"]
    #[doc = " here, `item_bounds` returns:"]
    #[doc = ""]
    #[doc = " ```text"]
    #[doc = " ["]
    #[doc = "     <Self as Trait>::Assoc: Eq,"]
    #[doc = "     <Self as Trait>::Assoc: PartialEq<<Self as Trait>::Assoc>"]
    #[doc = " ]"]
    #[doc = " ```"]
    item_bounds,

    #[doc =
    "[query description - consider adding a doc-comment!] elaborating item assumptions for  `tcx.def_path_str(key)` "]
    item_self_bounds,

    #[doc =
    "[query description - consider adding a doc-comment!] elaborating item assumptions for  `tcx.def_path_str(key)` "]
    item_non_self_bounds,

    #[doc =
    "[query description - consider adding a doc-comment!] elaborating supertrait outlives for trait of  `tcx.def_path_str(key)` "]
    impl_super_outlives,

    #[doc = " Look up all native libraries this crate depends on."]
    #[doc = " These are assembled from the following places:"]
    #[doc = " - `extern` blocks (depending on their `link` attributes)"]
    #[doc = " - the `libs` (`-l`) option"]
    native_libraries,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up lint levels for  `tcx.def_path_str(key)` "]
    shallow_lint_levels_on,

    #[doc =
    "[query description - consider adding a doc-comment!] computing `#[expect]`ed lints in this crate"]
    lint_expectations,

    #[doc =
    "[query description - consider adding a doc-comment!] Computing all lints that are explicitly enabled or with a default level greater than Allow"]
    lints_that_dont_need_to_run,

    #[doc =
    "[query description - consider adding a doc-comment!] getting the expansion that defined  `tcx.def_path_str(key)` "]
    expn_that_defined,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if the crate is_panic_runtime"]
    is_panic_runtime,

    #[doc = " Checks whether a type is representable or infinitely sized"]
    representability,

    #[doc = " An implementation detail for the `representability` query"]
    representability_adt_ty,

    #[doc =
    " Set of param indexes for type params that are in the type\'s representation"]
    params_in_repr,

    #[doc =
    " Fetch the THIR for a given body. The THIR body gets stolen by unsafety checking unless"]
    #[doc = " `-Zno-steal-thir` is on."]
    thir_body,

    #[doc =
    " Set of all the `DefId`s in this crate that have MIR associated with"]
    #[doc =
    " them. This includes all the body owners, but also things like struct"]
    #[doc = " constructors."]
    mir_keys,

    #[doc =
    " Maps DefId\'s that have an associated `mir::Body` to the result"]
    #[doc = " of the MIR const-checking pass. This is the set of qualifs in"]
    #[doc = " the final value of a `const`."]
    mir_const_qualif,

    #[doc =
    " Build the MIR for a given `DefId` and prepare it for const qualification."]
    #[doc = ""]
    #[doc = " See the [rustc dev guide] for more info."]
    #[doc = ""]
    #[doc =
    " [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/mir/construction.html"]
    mir_built,

    #[doc = " Try to build an abstract representation of the given constant."]
    thir_abstract_const,

    #[doc =
    "[query description - consider adding a doc-comment!] elaborating drops for  `tcx.def_path_str(key)` "]
    mir_drops_elaborated_and_const_checked,

    #[doc =
    "[query description - consider adding a doc-comment!] caching mir of  `tcx.def_path_str(key)`  for CTFE"]
    mir_for_ctfe,

    #[doc =
    "[query description - consider adding a doc-comment!] promoting constants in MIR for  `tcx.def_path_str(key)` "]
    mir_promoted,

    #[doc =
    "[query description - consider adding a doc-comment!] finding symbols for captures of closure  `tcx.def_path_str(key)` "]
    closure_typeinfo,

    #[doc = " Returns names of captured upvars for closures and coroutines."]
    #[doc = ""]
    #[doc = " Here are some examples:"]
    #[doc = "  - `name__field1__field2` when the upvar is captured by value."]
    #[doc =
    "  - `_ref__name__field` when the upvar is captured by reference."]
    #[doc = ""]
    #[doc =
    " For coroutines this only contains upvars that are shared by all states."]
    closure_saved_names_of_captured_variables,

    #[doc =
    "[query description - consider adding a doc-comment!] coroutine witness types for  `tcx.def_path_str(key)` "]
    mir_coroutine_witnesses,

    #[doc =
    "[query description - consider adding a doc-comment!] verify auto trait bounds for coroutine interior type  `tcx.def_path_str(key)` "]
    check_coroutine_obligations,

    #[doc =
    " Used in case `mir_borrowck` fails to prove an obligation. We generally assume that"]
    #[doc =
    " all goals we prove in MIR type check hold as we\'ve already checked them in HIR typeck."]
    #[doc = ""]
    #[doc =
    " However, we replace each free region in the MIR body with a unique region inference"]
    #[doc =
    " variable. As we may rely on structural identity when proving goals this may cause a"]
    #[doc =
    " goal to no longer hold. We store obligations for which this may happen during HIR"]
    #[doc =
    " typeck in the `TypeckResults`. We then uniquify and reprove them in case MIR typeck"]
    #[doc =
    " encounters an unexpected error. We expect this to result in an error when used and"]
    #[doc = " delay a bug if it does not."]
    check_potentially_region_dependent_goals,

    #[doc =
    " MIR after our optimization passes have run. This is MIR that is ready"]
    #[doc =
    " for codegen. This is also the only query that can fetch non-local MIR, at present."]
    optimized_mir,

    #[doc =
    " Checks for the nearest `#[coverage(off)]` or `#[coverage(on)]` on"]
    #[doc = " this def and any enclosing defs, up to the crate root."]
    #[doc = ""]
    #[doc = " Returns `false` if `#[coverage(off)]` was found, or `true` if"]
    #[doc = " either `#[coverage(on)]` or no coverage attribute was found."]
    coverage_attr_on,

    #[doc =
    " Scans through a function\'s MIR after MIR optimizations, to prepare the"]
    #[doc =
    " information needed by codegen when `-Cinstrument-coverage` is active."]
    #[doc = ""]
    #[doc =
    " This includes the details of where to insert `llvm.instrprof.increment`"]
    #[doc =
    " intrinsics, and the expression tables to be embedded in the function\'s"]
    #[doc = " coverage metadata."]
    #[doc = ""]
    #[doc =
    " FIXME(Zalathar): This query\'s purpose has drifted a bit and should"]
    #[doc =
    " probably be renamed, but that can wait until after the potential"]
    #[doc = " follow-ups to #136053 have settled down."]
    #[doc = ""]
    #[doc = " Returns `None` for functions that were not instrumented."]
    coverage_ids_info,

    #[doc =
    " The `DefId` is the `DefId` of the containing MIR body. Promoteds do not have their own"]
    #[doc =
    " `DefId`. This function returns all promoteds in the specified body. The body references"]
    #[doc =
    " promoteds by the `DefId` and the `mir::Promoted` index. This is necessary, because"]
    #[doc =
    " after inlining a body may refer to promoteds from other bodies. In that case you still"]
    #[doc = " need to use the `DefId` of the original body."]
    promoted_mir,

    #[doc = " Erases regions from `ty` to yield a new type."]
    #[doc =
    " Normally you would just use `tcx.erase_and_anonymize_regions(value)`,"]
    #[doc = " however, which uses this query as a kind of cache."]
    erase_and_anonymize_regions_ty,

    #[doc =
    "[query description - consider adding a doc-comment!] getting wasm import module map"]
    wasm_import_module_map,

    #[doc =
    " Returns the explicitly user-written *predicates and bounds* of the trait given by `DefId`."]
    #[doc = ""]
    #[doc = " Traits are unusual, because predicates on associated types are"]
    #[doc =
    " converted into bounds on that type for backwards compatibility:"]
    #[doc = ""]
    #[doc = " ```"]
    #[doc = " trait X where Self::U: Copy { type U; }"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc = " becomes"]
    #[doc = ""]
    #[doc = " ```"]
    #[doc = " trait X { type U: Copy; }"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc =
    " [`Self::explicit_predicates_of`] and [`Self::explicit_item_bounds`] will"]
    #[doc = " then take the appropriate subsets of the predicates here."]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc = " This query will panic if the given definition is not a trait."]
    trait_explicit_predicates_and_bounds,

    #[doc =
    " Returns the explicitly user-written *predicates* of the definition given by `DefId`"]
    #[doc =
    " that must be proven true at usage sites (and which can be assumed at definition site)."]
    #[doc = ""]
    #[doc =
    " You should probably use [`Self::predicates_of`] unless you\'re looking for"]
    #[doc = " predicates with explicit spans for diagnostics purposes."]
    explicit_predicates_of,

    #[doc =
    " Returns the *inferred outlives-predicates* of the item given by `DefId`."]
    #[doc = ""]
    #[doc =
    " E.g., for `struct Foo<\'a, T> { x: &\'a T }`, this would return `[T: \'a]`."]
    #[doc = ""]
    #[doc =
    " **Tip**: You can use `#[rustc_outlives]` on an item to basically print the"]
    #[doc =
    " result of this query for use in UI tests or for debugging purposes."]
    inferred_outlives_of,

    #[doc =
    " Returns the explicitly user-written *super-predicates* of the trait given by `DefId`."]
    #[doc = ""]
    #[doc =
    " These predicates are unelaborated and consequently don\'t contain transitive super-predicates."]
    #[doc = ""]
    #[doc =
    " This is a subset of the full list of predicates. We store these in a separate map"]
    #[doc =
    " because we must evaluate them even during type conversion, often before the full"]
    #[doc =
    " predicates are available (note that super-predicates must not be cyclic)."]
    explicit_super_predicates_of,

    #[doc =
    " The predicates of the trait that are implied during elaboration."]
    #[doc = ""]
    #[doc =
    " This is a superset of the super-predicates of the trait, but a subset of the predicates"]
    #[doc =
    " of the trait. For regular traits, this includes all super-predicates and their"]
    #[doc =
    " associated type bounds. For trait aliases, currently, this includes all of the"]
    #[doc = " predicates of the trait alias."]
    explicit_implied_predicates_of,

    #[doc =
    " The Ident is the name of an associated type.The query returns only the subset"]
    #[doc =
    " of supertraits that define the given associated type. This is used to avoid"]
    #[doc =
    " cycles in resolving type-dependent associated item paths like `T::Item`."]
    explicit_supertraits_containing_assoc_item,

    #[doc =
    " Compute the conditions that need to hold for a conditionally-const item to be const."]
    #[doc =
    " That is, compute the set of `[const]` where clauses for a given item."]
    #[doc = ""]
    #[doc =
    " This can be thought of as the `[const]` equivalent of `predicates_of`. These are the"]
    #[doc =
    " predicates that need to be proven at usage sites, and can be assumed at definition."]
    #[doc = ""]
    #[doc =
    " This query also computes the `[const]` where clauses for associated types, which are"]
    #[doc =
    " not \"const\", but which have item bounds which may be `[const]`. These must hold for"]
    #[doc = " the `[const]` item bound to hold."]
    const_conditions,

    #[doc =
    " Compute the const bounds that are implied for a conditionally-const item."]
    #[doc = ""]
    #[doc =
    " This can be though of as the `[const]` equivalent of `explicit_item_bounds`. These"]
    #[doc =
    " are the predicates that need to proven at definition sites, and can be assumed at"]
    #[doc = " usage sites."]
    explicit_implied_const_bounds,

    #[doc =
    " To avoid cycles within the predicates of a single item we compute"]
    #[doc = " per-type-parameter predicates for resolving `T::AssocTy`."]
    type_param_predicates,

    #[doc =
    "[query description - consider adding a doc-comment!] computing trait definition for  `tcx.def_path_str(key)` "]
    trait_def,

    #[doc =
    "[query description - consider adding a doc-comment!] computing ADT definition for  `tcx.def_path_str(key)` "]
    adt_def,

    #[doc =
    "[query description - consider adding a doc-comment!] computing `Drop` impl for  `tcx.def_path_str(key)` "]
    adt_destructor,

    #[doc =
    "[query description - consider adding a doc-comment!] computing `AsyncDrop` impl for  `tcx.def_path_str(key)` "]
    adt_async_destructor,

    #[doc =
    "[query description - consider adding a doc-comment!] computing the sizedness constraint for  `tcx.def_path_str(key.0)` "]
    adt_sizedness_constraint,

    #[doc =
    "[query description - consider adding a doc-comment!] computing drop-check constraints for  `tcx.def_path_str(key)` "]
    adt_dtorck_constraint,

    #[doc =
    " Returns the constness of the function-like[^1] definition given by `DefId`."]
    #[doc = ""]
    #[doc =
    " Tuple struct/variant constructors are *always* const, foreign functions are"]
    #[doc =
    " *never* const. The rest is const iff marked with keyword `const` (or rather"]
    #[doc = " its parent in the case of associated functions)."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc =
    " **Do not call this query** directly. It is only meant to cache the base data for the"]
    #[doc =
    " higher-level functions. Consider using `is_const_fn` or `is_const_trait_impl` instead."]
    #[doc = ""]
    #[doc =
    " Also note that neither of them takes into account feature gates, stability and"]
    #[doc = " const predicates/conditions!"]
    #[doc = ""]
    #[doc = " </div>"]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc =
    " This query will panic if the given definition is not function-like[^1]."]
    #[doc = ""]
    #[doc =
    " [^1]: Tuple struct/variant constructors, closures and free, associated and foreign functions."]
    constness,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if the function is async:  `tcx.def_path_str(key)` "]
    asyncness,

    #[doc = " Returns `true` if calls to the function may be promoted."]
    #[doc = ""]
    #[doc =
    " This is either because the function is e.g., a tuple-struct or tuple-variant"]
    #[doc =
    " constructor, or because it has the `#[rustc_promotable]` attribute. The attribute should"]
    #[doc =
    " be removed in the future in favour of some form of check which figures out whether the"]
    #[doc =
    " function does not inspect the bits of any of its arguments (so is essentially just a"]
    #[doc = " constructor function)."]
    is_promotable_const_fn,

    #[doc =
    " The body of the coroutine, modified to take its upvars by move rather than by ref."]
    #[doc = ""]
    #[doc =
    " This is used by coroutine-closures, which must return a different flavor of coroutine"]
    #[doc =
    " when called using `AsyncFnOnce::call_once`. It is produced by the `ByMoveBody` pass which"]
    #[doc =
    " is run right after building the initial MIR, and will only be populated for coroutines"]
    #[doc = " which come out of the async closure desugaring."]
    coroutine_by_move_body_def_id,

    #[doc =
    " Returns `Some(coroutine_kind)` if the node pointed to by `def_id` is a coroutine."]
    coroutine_kind,

    #[doc =
    "[query description - consider adding a doc-comment!] Given a coroutine-closure def id, return the def id of the coroutine returned by it"]
    coroutine_for_closure,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up the hidden types stored across await points in a coroutine"]
    coroutine_hidden_types,

    #[doc =
    " Gets a map with the variances of every item in the local crate."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc =
    " **Do not call this query** directly, use [`Self::variances_of`] instead."]
    #[doc = ""]
    #[doc = " </div>"]
    crate_variances,

    #[doc = " Returns the (inferred) variances of the item given by `DefId`."]
    #[doc = ""]
    #[doc =
    " The list of variances corresponds to the list of (early-bound) generic"]
    #[doc = " parameters of the item (including its parents)."]
    #[doc = ""]
    #[doc =
    " **Tip**: You can use `#[rustc_variance]` on an item to basically print the"]
    #[doc =
    " result of this query for use in UI tests or for debugging purposes."]
    variances_of,

    #[doc =
    " Gets a map with the inferred outlives-predicates of every item in the local crate."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc =
    " **Do not call this query** directly, use [`Self::inferred_outlives_of`] instead."]
    #[doc = ""]
    #[doc = " </div>"]
    inferred_outlives_crate,

    #[doc = " Maps from an impl/trait or struct/variant `DefId`"]
    #[doc = " to a list of the `DefId`s of its associated items or fields."]
    associated_item_def_ids,

    #[doc =
    " Maps from a trait/impl item to the trait/impl item \"descriptor\"."]
    associated_item,

    #[doc = " Collects the associated items defined on a trait or impl."]
    associated_items,

    #[doc =
    " Maps from associated items on a trait to the corresponding associated"]
    #[doc = " item on the impl specified by `impl_id`."]
    #[doc = ""]
    #[doc = " For example, with the following code"]
    #[doc = ""]
    #[doc = " ```"]
    #[doc = " struct Type {}"]
    #[doc = "                         // DefId"]
    #[doc = " trait Trait {           // trait_id"]
    #[doc = "     fn f();             // trait_f"]
    #[doc = "     fn g() {}           // trait_g"]
    #[doc = " }"]
    #[doc = ""]
    #[doc = " impl Trait for Type {   // impl_id"]
    #[doc = "     fn f() {}           // impl_f"]
    #[doc = "     fn g() {}           // impl_g"]
    #[doc = " }"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc =
    " The map returned for `tcx.impl_item_implementor_ids(impl_id)` would be"]
    #[doc = "`{ trait_f: impl_f, trait_g: impl_g }`"]
    impl_item_implementor_ids,

    #[doc =
    " Given the `item_def_id` of a trait or impl, return a mapping from associated fn def id"]
    #[doc =
    " to its associated type items that correspond to the RPITITs in its signature."]
    associated_types_for_impl_traits_in_trait_or_impl,

    #[doc =
    " Given an `impl_id`, return the trait it implements along with some header information."]
    impl_trait_header,

    #[doc =
    " Given an `impl_def_id`, return true if the self type is guaranteed to be unsized due"]
    #[doc =
    " to either being one of the built-in unsized types (str/slice/dyn) or to be a struct"]
    #[doc = " whose tail is one of those types."]
    impl_self_is_guaranteed_unsized,

    #[doc = " Maps a `DefId` of a type to a list of its inherent impls."]
    #[doc =
    " Contains implementations of methods that are inherent to a type."]
    #[doc = " Methods in these implementations don\'t need to be exported."]
    inherent_impls,

    #[doc =
    "[query description - consider adding a doc-comment!] collecting all inherent impls for `{:?}`"]
    incoherent_impls,

    #[doc = " Unsafety-check this `LocalDefId`."]
    check_transmutes,

    #[doc = " Unsafety-check this `LocalDefId`."]
    check_unsafety,

    #[doc = " Checks well-formedness of tail calls (`become f()`)."]
    check_tail_calls,

    #[doc =
    " Returns the types assumed to be well formed while \"inside\" of the given item."]
    #[doc = ""]
    #[doc =
    " Note that we\'ve liberated the late bound regions of function signatures, so"]
    #[doc =
    " this can not be used to check whether these types are well formed."]
    assumed_wf_types,

    #[doc =
    " We need to store the assumed_wf_types for an RPITIT so that impls of foreign"]
    #[doc =
    " traits with return-position impl trait in traits can inherit the right wf types."]
    assumed_wf_types_for_rpitit,

    #[doc = " Computes the signature of the function."]
    fn_sig,

    #[doc = " Performs lint checking for the module."]
    lint_mod,

    #[doc =
    "[query description - consider adding a doc-comment!] checking unused trait imports in crate"]
    check_unused_traits,

    #[doc = " Checks the attributes in the module."]
    check_mod_attrs,

    #[doc = " Checks for uses of unstable APIs in the module."]
    check_mod_unstable_api_usage,

    #[doc =
    "[query description - consider adding a doc-comment!] checking privacy in  `describe_as_module(key.to_local_def_id(), tcx)` "]
    check_mod_privacy,

    #[doc =
    "[query description - consider adding a doc-comment!] checking liveness of variables in  `tcx.def_path_str(key.to_def_id())` "]
    check_liveness,

    #[doc = " Return the live symbols in the crate for dead code check."]
    #[doc = ""]
    #[doc =
    " The second return value maps from ADTs to ignored derived traits (e.g. Debug and Clone)."]
    live_symbols_and_ignored_derived_traits,

    #[doc =
    "[query description - consider adding a doc-comment!] checking deathness of variables in  `describe_as_module(key, tcx)` "]
    check_mod_deathness,

    #[doc =
    "[query description - consider adding a doc-comment!] checking that types are well-formed"]
    check_type_wf,

    #[doc = " Caches `CoerceUnsized` kinds for impls on custom types."]
    coerce_unsized_info,

    #[doc =
    "[query description - consider adding a doc-comment!] type-checking  `tcx.def_path_str(key)` "]
    typeck,

    #[doc =
    "[query description - consider adding a doc-comment!] finding used_trait_imports  `tcx.def_path_str(key)` "]
    used_trait_imports,

    #[doc =
    "[query description - consider adding a doc-comment!] coherence checking all impls of trait  `tcx.def_path_str(def_id)` "]
    coherent_trait,

    #[doc =
    " Borrow-checks the given typeck root, e.g. functions, const/static items,"]
    #[doc = " and its children, e.g. closures, inline consts."]
    mir_borrowck,

    #[doc = " Gets a complete map from all types to their inherent impls."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc = " **Not meant to be used** directly outside of coherence."]
    #[doc = ""]
    #[doc = " </div>"]
    crate_inherent_impls,

    #[doc =
    " Checks all types in the crate for overlap in their inherent impls. Reports errors."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc = " **Not meant to be used** directly outside of coherence."]
    #[doc = ""]
    #[doc = " </div>"]
    crate_inherent_impls_validity_check,

    #[doc =
    " Checks all types in the crate for overlap in their inherent impls. Reports errors."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc = " **Not meant to be used** directly outside of coherence."]
    #[doc = ""]
    #[doc = " </div>"]
    crate_inherent_impls_overlap_check,

    #[doc =
    " Checks whether all impls in the crate pass the overlap check, returning"]
    #[doc =
    " which impls fail it. If all impls are correct, the returned slice is empty."]
    orphan_check_impl,

    #[doc =
    " Return the set of (transitive) callees that may result in a recursive call to `key`,"]
    #[doc = " if we were able to walk all callees."]
    mir_callgraph_cyclic,

    #[doc = " Obtain all the calls into other local functions"]
    mir_inliner_callees,

    #[doc = " Computes the tag (if any) for a given type and variant."]
    #[doc = ""]
    #[doc =
    " `None` means that the variant doesn\'t need a tag (because it is niched)."]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc =
    " This query will panic for uninhabited variants and if the passed type is not an enum."]
    tag_for_variant,

    #[doc = " Evaluates a constant and returns the computed allocation."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc =
    " **Do not call this query** directly, use [`Self::eval_to_const_value_raw`] or"]
    #[doc = " [`Self::eval_to_valtree`] instead."]
    #[doc = ""]
    #[doc = " </div>"]
    eval_to_allocation_raw,

    #[doc =
    " Evaluate a static\'s initializer, returning the allocation of the initializer\'s memory."]
    eval_static_initializer,

    #[doc =
    " Evaluates const items or anonymous constants[^1] into a representation"]
    #[doc = " suitable for the type system and const generics."]
    #[doc = ""]
    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc =
    " **Do not call this** directly, use one of the following wrappers:"]
    #[doc = " [`TyCtxt::const_eval_poly`], [`TyCtxt::const_eval_resolve`],"]
    #[doc =
    " [`TyCtxt::const_eval_instance`], or [`TyCtxt::const_eval_global_id`]."]
    #[doc = ""]
    #[doc = " </div>"]
    #[doc = ""]
    #[doc =
    " [^1]: Such as enum variant explicit discriminants or array lengths."]
    eval_to_const_value_raw,

    #[doc = " Evaluate a constant and convert it to a type level constant or"]
    #[doc = " return `None` if that is not possible."]
    eval_to_valtree,

    #[doc =
    " Converts a type-level constant value into a MIR constant value."]
    valtree_to_const_val,

    #[doc =
    "[query description - consider adding a doc-comment!] converting literal to const"]
    lit_to_const,

    #[doc =
    "[query description - consider adding a doc-comment!] match-checking  `tcx.def_path_str(key)` "]
    check_match,

    #[doc =
    " Performs part of the privacy check and computes effective visibilities."]
    effective_visibilities,

    #[doc =
    "[query description - consider adding a doc-comment!] checking for private elements in public interfaces for  `describe_as_module(module_def_id, tcx)` "]
    check_private_in_public,

    #[doc =
    "[query description - consider adding a doc-comment!] reachability"]
    reachable_set,

    #[doc =
    " Per-body `region::ScopeTree`. The `DefId` should be the owner `DefId` for the body;"]
    #[doc =
    " in the case of closures, this will be redirected to the enclosing function."]
    region_scope_tree,

    #[doc = " Generates a MIR body for the shim."]
    mir_shims,

    #[doc = " The `symbol_name` query provides the symbol name for calling a"]
    #[doc =
    " given instance from the local crate. In particular, it will also"]
    #[doc =
    " look up the correct symbol name of instances from upstream crates."]
    symbol_name,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up definition kind of  `tcx.def_path_str(def_id)` "]
    def_kind,

    #[doc = " Gets the span for the definition."]
    def_span,

    #[doc = " Gets the span for the identifier of the definition."]
    def_ident_span,

    #[doc = " Gets the span for the type of the definition."]
    #[doc = " Panics if it is not a definition that has a single type."]
    ty_span,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up stability of  `tcx.def_path_str(def_id)` "]
    lookup_stability,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up const stability of  `tcx.def_path_str(def_id)` "]
    lookup_const_stability,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up default body stability of  `tcx.def_path_str(def_id)` "]
    lookup_default_body_stability,

    #[doc =
    "[query description - consider adding a doc-comment!] computing should_inherit_track_caller of  `tcx.def_path_str(def_id)` "]
    should_inherit_track_caller,

    #[doc =
    "[query description - consider adding a doc-comment!] computing inherited_align of  `tcx.def_path_str(def_id)` "]
    inherited_align,

    #[doc =
    "[query description - consider adding a doc-comment!] checking whether  `tcx.def_path_str(def_id)`  is deprecated"]
    lookup_deprecation_entry,

    #[doc = " Determines whether an item is annotated with `#[doc(hidden)]`."]
    is_doc_hidden,

    #[doc =
    " Determines whether an item is annotated with `#[doc(notable_trait)]`."]
    is_doc_notable_trait,

    #[doc = " Returns the attributes on the item at `def_id`."]
    #[doc = ""]
    #[doc = " Do not use this directly, use `tcx.get_attrs` instead."]
    attrs_for_def,

    #[doc = " Returns the `CodegenFnAttrs` for the item at `def_id`."]
    #[doc = ""]
    #[doc =
    " If possible, use `tcx.codegen_instance_attrs` instead. That function takes the"]
    #[doc = " instance kind into account."]
    #[doc = ""]
    #[doc =
    " For example, the `#[naked]` attribute should be applied for `InstanceKind::Item`,"]
    #[doc =
    " but should not be applied if the instance kind is `InstanceKind::ReifyShim`."]
    #[doc =
    " Using this query would include the attribute regardless of the actual instance"]
    #[doc = " kind at the call site."]
    codegen_fn_attrs,

    #[doc =
    "[query description - consider adding a doc-comment!] computing target features for inline asm of  `tcx.def_path_str(def_id)` "]
    asm_target_features,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up function parameter identifiers for  `tcx.def_path_str(def_id)` "]
    fn_arg_idents,

    #[doc =
    " Gets the rendered value of the specified constant or associated constant."]
    #[doc = " Used by rustdoc."]
    rendered_const,

    #[doc =
    " Gets the rendered precise capturing args for an opaque for use in rustdoc."]
    rendered_precise_capturing_args,

    #[doc =
    "[query description - consider adding a doc-comment!] computing specialization parent impl of  `tcx.def_path_str(def_id)` "]
    impl_parent,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if item has CTFE MIR available:  `tcx.def_path_str(key)` "]
    is_ctfe_mir_available,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if item has MIR available:  `tcx.def_path_str(key)` "]
    is_mir_available,

    #[doc =
    "[query description - consider adding a doc-comment!] finding all existential vtable entries for trait  `tcx.def_path_str(key)` "]
    own_existential_vtable_entries,

    #[doc =
    "[query description - consider adding a doc-comment!] finding all vtable entries for trait  `tcx.def_path_str(key.def_id)` "]
    vtable_entries,

    #[doc =
    "[query description - consider adding a doc-comment!] finding the slot within the vtable of  `key.self_ty()`  for the implementation of  `key.print_only_trait_name()` "]
    first_method_vtable_slot,

    #[doc =
    "[query description - consider adding a doc-comment!] finding the slot within vtable for trait object  `key.1`  vtable ptr during trait upcasting coercion from  `key.0`  vtable"]
    supertrait_vtable_slot,

    #[doc =
    "[query description - consider adding a doc-comment!] vtable const allocation for < `key.0`  as  `key.1.map(| trait_ref | format!\n(\"{trait_ref}\")).unwrap_or_else(| | \"_\".to_owned())` >"]
    vtable_allocation,

    #[doc =
    "[query description - consider adding a doc-comment!] computing candidate for  `key.value` "]
    codegen_select_candidate,

    #[doc = " Return all `impl` blocks in the current crate."]
    all_local_trait_impls,

    #[doc =
    " Return all `impl` blocks of the given trait in the current crate."]
    local_trait_impls,

    #[doc = " Given a trait `trait_id`, return all known `impl` blocks."]
    trait_impls_of,

    #[doc =
    "[query description - consider adding a doc-comment!] building specialization graph of trait  `tcx.def_path_str(trait_id)` "]
    specialization_graph_of,

    #[doc =
    "[query description - consider adding a doc-comment!] determining dyn-compatibility of trait  `tcx.def_path_str(trait_id)` "]
    dyn_compatibility_violations,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if trait  `tcx.def_path_str(trait_id)`  is dyn-compatible"]
    is_dyn_compatible,

    #[doc =
    " Gets the ParameterEnvironment for a given item; this environment"]
    #[doc =
    " will be in \"user-facing\" mode, meaning that it is suitable for"]
    #[doc = " type-checking etc, and it does not normalize specializable"]
    #[doc = " associated types."]
    #[doc = ""]
    #[doc =
    " You should almost certainly not use this. If you already have an InferCtxt, then"]
    #[doc =
    " you should also probably have a `ParamEnv` from when it was built. If you don\'t,"]
    #[doc =
    " then you should take a `TypingEnv` to ensure that you handle opaque types correctly."]
    param_env,

    #[doc =
    " Like `param_env`, but returns the `ParamEnv` after all opaque types have been"]
    #[doc =
    " replaced with their hidden type. This is used in the old trait solver"]
    #[doc = " when in `PostAnalysis` mode and should not be called directly."]
    typing_env_normalized_for_post_analysis,

    #[doc =
    " Trait selection queries. These are best used by invoking `ty.is_copy_modulo_regions()`,"]
    #[doc =
    " `ty.is_copy()`, etc, since that will prune the environment where possible."]
    is_copy_raw,

    #[doc =
    " Trait selection queries. These are best used by invoking `ty.is_use_cloned_modulo_regions()`,"]
    #[doc =
    " `ty.is_use_cloned()`, etc, since that will prune the environment where possible."]
    is_use_cloned_raw,

    #[doc = " Query backing `Ty::is_sized`."]
    is_sized_raw,

    #[doc = " Query backing `Ty::is_freeze`."]
    is_freeze_raw,

    #[doc = " Query backing `Ty::is_unpin`."]
    is_unpin_raw,

    #[doc = " Query backing `Ty::is_async_drop`."]
    is_async_drop_raw,

    #[doc = " Query backing `Ty::needs_drop`."]
    needs_drop_raw,

    #[doc = " Query backing `Ty::needs_async_drop`."]
    needs_async_drop_raw,

    #[doc = " Query backing `Ty::has_significant_drop_raw`."]
    has_significant_drop_raw,

    #[doc = " Query backing `Ty::is_structural_eq_shallow`."]
    #[doc = ""]
    #[doc =
    " This is only correct for ADTs. Call `is_structural_eq_shallow` to handle all types"]
    #[doc = " correctly."]
    has_structural_eq_impl,

    #[doc =
    " A list of types where the ADT requires drop if and only if any of"]
    #[doc =
    " those types require drop. If the ADT is known to always need drop"]
    #[doc = " then `Err(AlwaysRequiresDrop)` is returned."]
    adt_drop_tys,

    #[doc =
    " A list of types where the ADT requires async drop if and only if any of"]
    #[doc =
    " those types require async drop. If the ADT is known to always need async drop"]
    #[doc = " then `Err(AlwaysRequiresDrop)` is returned."]
    adt_async_drop_tys,

    #[doc =
    " A list of types where the ADT requires drop if and only if any of those types"]
    #[doc =
    " has significant drop. A type marked with the attribute `rustc_insignificant_dtor`"]
    #[doc =
    " is considered to not be significant. A drop is significant if it is implemented"]
    #[doc =
    " by the user or does anything that will have any observable behavior (other than"]
    #[doc =
    " freeing up memory). If the ADT is known to have a significant destructor then"]
    #[doc = " `Err(AlwaysRequiresDrop)` is returned."]
    adt_significant_drop_tys,

    #[doc =
    " Returns a list of types which (a) have a potentially significant destructor"]
    #[doc =
    " and (b) may be dropped as a result of dropping a value of some type `ty`"]
    #[doc = " (in the given environment)."]
    #[doc = ""]
    #[doc =
    " The idea of \"significant\" drop is somewhat informal and is used only for"]
    #[doc =
    " diagnostics and edition migrations. The idea is that a significant drop may have"]
    #[doc =
    " some visible side-effect on execution; freeing memory is NOT considered a side-effect."]
    #[doc = " The rules are as follows:"]
    #[doc =
    " * Type with no explicit drop impl do not have significant drop."]
    #[doc =
    " * Types with a drop impl are assumed to have significant drop unless they have a `#[rustc_insignificant_dtor]` annotation."]
    #[doc = ""]
    #[doc =
    " Note that insignificant drop is a \"shallow\" property. A type like `Vec<LockGuard>` does not"]
    #[doc =
    " have significant drop but the type `LockGuard` does, and so if `ty  = Vec<LockGuard>`"]
    #[doc = " then the return value would be `&[LockGuard]`."]
    #[doc =
    " *IMPORTANT*: *DO NOT* run this query before promoted MIR body is constructed,"]
    #[doc = " because this query partially depends on that query."]
    #[doc = " Otherwise, there is a risk of query cycles."]
    list_significant_drop_tys,

    #[doc = " Computes the layout of a type. Note that this implicitly"]
    #[doc =
    " executes in `TypingMode::PostAnalysis`, and will normalize the input type."]
    layout_of,

    #[doc =
    " Compute a `FnAbi` suitable for indirect calls, i.e. to `fn` pointers."]
    #[doc = ""]
    #[doc =
    " NB: this doesn\'t handle virtual calls - those should use `fn_abi_of_instance`"]
    #[doc = " instead, where the instance is an `InstanceKind::Virtual`."]
    fn_abi_of_fn_ptr,

    #[doc =
    " Compute a `FnAbi` suitable for declaring/defining an `fn` instance, and for"]
    #[doc = " direct calls to an `fn`."]
    #[doc = ""]
    #[doc =
    " NB: that includes virtual calls, which are represented by \"direct calls\""]
    #[doc =
    " to an `InstanceKind::Virtual` instance (of `<dyn Trait as Trait>::fn`)."]
    fn_abi_of_instance,

    #[doc =
    "[query description - consider adding a doc-comment!] getting dylib dependency formats of crate"]
    dylib_dependency_formats,

    #[doc =
    "[query description - consider adding a doc-comment!] getting the linkage format of all dependencies"]
    dependency_formats,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if the crate is_compiler_builtins"]
    is_compiler_builtins,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if the crate has_global_allocator"]
    has_global_allocator,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if the crate has_alloc_error_handler"]
    has_alloc_error_handler,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if the crate has_panic_handler"]
    has_panic_handler,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if a crate is `#![profiler_runtime]`"]
    is_profiler_runtime,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if  `tcx.def_path_str(key)`  contains FFI-unwind calls"]
    has_ffi_unwind_calls,

    #[doc =
    "[query description - consider adding a doc-comment!] getting a crate's required panic strategy"]
    required_panic_strategy,

    #[doc =
    "[query description - consider adding a doc-comment!] getting a crate's configured panic-in-drop strategy"]
    panic_in_drop_strategy,

    #[doc =
    "[query description - consider adding a doc-comment!] getting whether a crate has `#![no_builtins]`"]
    is_no_builtins,

    #[doc =
    "[query description - consider adding a doc-comment!] getting a crate's symbol mangling version"]
    symbol_mangling_version,

    #[doc =
    "[query description - consider adding a doc-comment!] getting crate's ExternCrateData"]
    extern_crate,

    #[doc =
    "[query description - consider adding a doc-comment!] checking whether the crate enabled `specialization`/`min_specialization`"]
    specialization_enabled_in,

    #[doc =
    "[query description - consider adding a doc-comment!] computing whether impls specialize one another"]
    specializes,

    #[doc =
    "[query description - consider adding a doc-comment!] getting traits in scope at a block"]
    in_scope_traits_map,

    #[doc =
    " Returns whether the impl or associated function has the `default` keyword."]
    #[doc =
    " Note: This will ICE on inherent impl items. Consider using `AssocItem::defaultness`."]
    defaultness,

    #[doc =
    " Returns whether the field corresponding to the `DefId` has a default field value."]
    default_field,

    #[doc =
    "[query description - consider adding a doc-comment!] checking that  `tcx.def_path_str(key)`  is well-formed"]
    check_well_formed,

    #[doc =
    "[query description - consider adding a doc-comment!] checking that  `tcx.def_path_str(key)` 's generics are constrained by the impl header"]
    enforce_impl_non_lifetime_params_are_constrained,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up the exported symbols of a crate"]
    reachable_non_generics,

    #[doc =
    "[query description - consider adding a doc-comment!] checking whether  `tcx.def_path_str(def_id)`  is an exported symbol"]
    is_reachable_non_generic,

    #[doc =
    "[query description - consider adding a doc-comment!] checking whether  `tcx.def_path_str(def_id)`  is reachable from outside the crate"]
    is_unreachable_local_definition,

    #[doc = " The entire set of monomorphizations the local crate can safely"]
    #[doc = " link to because they are exported from upstream crates. Do"]
    #[doc = " not depend on this directly, as its value changes anytime"]
    #[doc = " a monomorphization gets added or removed in any upstream"]
    #[doc =
    " crate. Instead use the narrower `upstream_monomorphizations_for`,"]
    #[doc = " `upstream_drop_glue_for`, `upstream_async_drop_glue_for`, or,"]
    #[doc = " even better, `Instance::upstream_monomorphization()`."]
    upstream_monomorphizations,

    #[doc =
    " Returns the set of upstream monomorphizations available for the"]
    #[doc =
    " generic function identified by the given `def_id`. The query makes"]
    #[doc =
    " sure to make a stable selection if the same monomorphization is"]
    #[doc = " available in multiple upstream crates."]
    #[doc = ""]
    #[doc =
    " You likely want to call `Instance::upstream_monomorphization()`"]
    #[doc = " instead of invoking this query directly."]
    upstream_monomorphizations_for,

    #[doc =
    " Returns the upstream crate that exports drop-glue for the given"]
    #[doc =
    " type (`args` is expected to be a single-item list containing the"]
    #[doc = " type one wants drop-glue for)."]
    #[doc = ""]
    #[doc =
    " This is a subset of `upstream_monomorphizations_for` in order to"]
    #[doc =
    " increase dep-tracking granularity. Otherwise adding or removing any"]
    #[doc = " type with drop-glue in any upstream crate would invalidate all"]
    #[doc = " functions calling drop-glue of an upstream type."]
    #[doc = ""]
    #[doc =
    " You likely want to call `Instance::upstream_monomorphization()`"]
    #[doc = " instead of invoking this query directly."]
    #[doc = ""]
    #[doc =
    " NOTE: This query could easily be extended to also support other"]
    #[doc =
    "       common functions that have are large set of monomorphizations"]
    #[doc = "       (like `Clone::clone` for example)."]
    upstream_drop_glue_for,

    #[doc = " Returns the upstream crate that exports async-drop-glue for"]
    #[doc = " the given type (`args` is expected to be a single-item list"]
    #[doc = " containing the type one wants async-drop-glue for)."]
    #[doc = ""]
    #[doc = " This is a subset of `upstream_monomorphizations_for` in order"]
    #[doc = " to increase dep-tracking granularity. Otherwise adding or"]
    #[doc = " removing any type with async-drop-glue in any upstream crate"]
    #[doc = " would invalidate all functions calling async-drop-glue of an"]
    #[doc = " upstream type."]
    #[doc = ""]
    #[doc =
    " You likely want to call `Instance::upstream_monomorphization()`"]
    #[doc = " instead of invoking this query directly."]
    #[doc = ""]
    #[doc =
    " NOTE: This query could easily be extended to also support other"]
    #[doc =
    "       common functions that have are large set of monomorphizations"]
    #[doc = "       (like `Clone::clone` for example)."]
    upstream_async_drop_glue_for,

    #[doc = " Returns a list of all `extern` blocks of a crate."]
    foreign_modules,

    #[doc =
    " Lint against `extern fn` declarations having incompatible types."]
    clashing_extern_declarations,

    #[doc =
    " Identifies the entry-point (e.g., the `main` function) for a given"]
    #[doc =
    " crate, returning `None` if there is no entry point (such as for library crates)."]
    entry_fn,

    #[doc = " Finds the `rustc_proc_macro_decls` item of a crate."]
    proc_macro_decls_static,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up the hash a crate"]
    crate_hash,

    #[doc =
    " Gets the hash for the host proc macro. Used to support -Z dual-proc-macro."]
    crate_host_hash,

    #[doc =
    " Gets the extra data to put in each output filename for a crate."]
    #[doc =
    " For example, compiling the `foo` crate with `extra-filename=-a` creates a `libfoo-b.rlib` file."]
    extra_filename,

    #[doc = " Gets the paths where the crate came from in the file system."]
    crate_extern_paths,

    #[doc =
    " Given a crate and a trait, look up all impls of that trait in the crate."]
    #[doc = " Return `(impl_id, self_ty)`."]
    implementations_of_trait,

    #[doc = " Collects all incoherent impls for the given crate and type."]
    #[doc = ""]
    #[doc =
    " Do not call this directly, but instead use the `incoherent_impls` query."]
    #[doc =
    " This query is only used to get the data necessary for that query."]
    crate_incoherent_impls,

    #[doc =
    " Get the corresponding native library from the `native_libraries` query"]
    native_library,

    #[doc =
    "[query description - consider adding a doc-comment!] inheriting delegation signature"]
    inherit_sig_for_delegation_item,

    #[doc =
    " Does lifetime resolution on items. Importantly, we can\'t resolve"]
    #[doc =
    " lifetimes directly on things like trait methods, because of trait params."]
    #[doc = " See `rustc_resolve::late::lifetimes` for details."]
    resolve_bound_vars,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up a named region inside  `tcx.def_path_str(owner_id)` "]
    named_variable_map,

    #[doc =
    "[query description - consider adding a doc-comment!] testing if a region is late bound inside  `tcx.def_path_str(owner_id)` "]
    is_late_bound_map,

    #[doc =
    " Returns the *default lifetime* to be used if a trait object type were to be passed for"]
    #[doc = " the type parameter given by `DefId`."]
    #[doc = ""]
    #[doc =
    " **Tip**: You can use `#[rustc_object_lifetime_default]` on an item to basically"]
    #[doc =
    " print the result of this query for use in UI tests or for debugging purposes."]
    #[doc = ""]
    #[doc = " # Examples"]
    #[doc = ""]
    #[doc =
    " - For `T` in `struct Foo<\'a, T: \'a>(&\'a T);`, this would be `Param(\'a)`"]
    #[doc =
    " - For `T` in `struct Bar<\'a, T>(&\'a T);`, this would be `Empty`"]
    #[doc = ""]
    #[doc = " # Panics"]
    #[doc = ""]
    #[doc =
    " This query will panic if the given definition is not a type parameter."]
    object_lifetime_default,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up late bound vars inside  `tcx.def_path_str(owner_id)` "]
    late_bound_vars_map,

    #[doc =
    " For an opaque type, return the list of (captured lifetime, inner generic param)."]
    #[doc = " ```ignore (illustrative)"]
    #[doc =
    " fn foo<\'a: \'a, \'b, T>(&\'b u8) -> impl Into<Self> + \'b { ... }"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc =
    " We would return `[(\'a, \'_a), (\'b, \'_b)]`, with `\'a` early-bound and `\'b` late-bound."]
    #[doc = ""]
    #[doc = " After hir_ty_lowering, we get:"]
    #[doc = " ```ignore (pseudo-code)"]
    #[doc = " opaque foo::<\'a>::opaque<\'_a, \'_b>: Into<Foo<\'_a>> + \'_b;"]
    #[doc = "                          ^^^^^^^^ inner generic params"]
    #[doc =
    " fn foo<\'a>: for<\'b> fn(&\'b u8) -> foo::<\'a>::opaque::<\'a, \'b>"]
    #[doc =
    "                                                       ^^^^^^ captured lifetimes"]
    #[doc = " ```"]
    opaque_captured_lifetimes,

    #[doc = " Computes the visibility of the provided `def_id`."]
    #[doc = ""]
    #[doc =
    " If the item from the `def_id` doesn\'t have a visibility, it will panic. For example"]
    #[doc =
    " a generic type parameter will panic if you call this method on it:"]
    #[doc = ""]
    #[doc = " ```"]
    #[doc = " use std::fmt::Debug;"]
    #[doc = ""]
    #[doc = " pub trait Foo<T: Debug> {}"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc = " In here, if you call `visibility` on `T`, it\'ll panic."]
    visibility,

    #[doc =
    "[query description - consider adding a doc-comment!] computing the uninhabited predicate of `{:?}`"]
    inhabited_predicate_adt,

    #[doc =
    " Do not call this query directly: invoke `Ty::inhabited_predicate` instead."]
    inhabited_predicate_type,

    #[doc =
    "[query description - consider adding a doc-comment!] fetching what a dependency looks like"]
    dep_kind,

    #[doc = " Gets the name of the crate."]
    crate_name,

    #[doc =
    "[query description - consider adding a doc-comment!] collecting child items of module  `tcx.def_path_str(def_id)` "]
    module_children,

    #[doc = " Gets the number of definitions in a foreign crate."]
    #[doc = ""]
    #[doc =
    " This allows external tools to iterate over all definitions in a foreign crate."]
    #[doc = ""]
    #[doc =
    " This should never be used for the local crate, instead use `iter_local_def_id`."]
    num_extern_def_ids,

    #[doc =
    "[query description - consider adding a doc-comment!] calculating the lib features defined in a crate"]
    lib_features,

    #[doc =
    " Mapping from feature name to feature name based on the `implied_by` field of `#[unstable]`"]
    #[doc =
    " attributes. If a `#[unstable(feature = \"implier\", implied_by = \"impliee\")]` attribute"]
    #[doc = " exists, then this map will have a `impliee -> implier` entry."]
    #[doc = ""]
    #[doc =
    " This mapping is necessary unless both the `#[stable]` and `#[unstable]` attributes should"]
    #[doc =
    " specify their implications (both `implies` and `implied_by`). If only one of the two"]
    #[doc =
    " attributes do (as in the current implementation, `implied_by` in `#[unstable]`), then this"]
    #[doc =
    " mapping is necessary for diagnostics. When a \"unnecessary feature attribute\" error is"]
    #[doc =
    " reported, only the `#[stable]` attribute information is available, so the map is necessary"]
    #[doc =
    " to know that the feature implies another feature. If it were reversed, and the `#[stable]`"]
    #[doc =
    " attribute had an `implies` meta item, then a map would be necessary when avoiding a \"use of"]
    #[doc = " unstable feature\" error for a feature that was implied."]
    stability_implications,

    #[doc = " Whether the function is an intrinsic"]
    intrinsic_raw,

    #[doc =
    " Returns the lang items defined in another crate by loading it from metadata."]
    get_lang_items,

    #[doc = " Returns all diagnostic items defined in all crates."]
    all_diagnostic_items,

    #[doc =
    " Returns the lang items defined in another crate by loading it from metadata."]
    defined_lang_items,

    #[doc = " Returns the diagnostic items defined in a crate."]
    diagnostic_items,

    #[doc =
    "[query description - consider adding a doc-comment!] calculating the missing lang items in a crate"]
    missing_lang_items,

    #[doc =
    " The visible parent map is a map from every item to a visible parent."]
    #[doc = " It prefers the shortest visible path to an item."]
    #[doc = " Used for diagnostics, for example path trimming."]
    #[doc = " The parents are modules, enums or traits."]
    visible_parent_map,

    #[doc =
    " Collects the \"trimmed\", shortest accessible paths to all items for diagnostics."]
    #[doc =
    " See the [provider docs](`rustc_middle::ty::print::trimmed_def_paths`) for more info."]
    trimmed_def_paths,

    #[doc =
    "[query description - consider adding a doc-comment!] seeing if we're missing an `extern crate` item for this crate"]
    missing_extern_crate_item,

    #[doc =
    "[query description - consider adding a doc-comment!] looking at the source for a crate"]
    used_crate_source,

    #[doc = " Returns the debugger visualizers defined for this crate."]
    #[doc =
    " NOTE: This query has to be marked `eval_always` because it reads data"]
    #[doc =
    "       directly from disk that is not tracked anywhere else. I.e. it"]
    #[doc = "       represents a genuine input to the query system."]
    debugger_visualizers,

    #[doc =
    "[query description - consider adding a doc-comment!] generating a postorder list of CrateNums"]
    postorder_cnums,

    #[doc = " Returns whether or not the crate with CrateNum \'cnum\'"]
    #[doc = " is marked as a private dependency"]
    is_private_dep,

    #[doc =
    "[query description - consider adding a doc-comment!] getting the allocator kind for the current crate"]
    allocator_kind,

    #[doc =
    "[query description - consider adding a doc-comment!] alloc error handler kind for the current crate"]
    alloc_error_handler_kind,

    #[doc =
    "[query description - consider adding a doc-comment!] collecting upvars mentioned in  `tcx.def_path_str(def_id)` "]
    upvars_mentioned,

    #[doc =
    " All available crates in the graph, including those that should not be user-facing"]
    #[doc = " (such as private crates)."]
    crates,

    #[doc =
    "[query description - consider adding a doc-comment!] fetching `CrateNum`s for all crates loaded non-speculatively"]
    used_crates,

    #[doc = " All crates that share the same name as crate `c`."]
    #[doc = ""]
    #[doc =
    " This normally occurs when multiple versions of the same dependency are present in the"]
    #[doc = " dependency tree."]
    duplicate_crate_names,

    #[doc =
    " A list of all traits in a crate, used by rustdoc and error reporting."]
    traits,

    #[doc =
    "[query description - consider adding a doc-comment!] fetching all trait impls in a crate"]
    trait_impls_in_crate,

    #[doc =
    "[query description - consider adding a doc-comment!] fetching the stable impl's order"]
    stable_order_of_exportable_impls,

    #[doc =
    "[query description - consider adding a doc-comment!] fetching all exportable items in a crate"]
    exportable_items,

    #[doc = " The list of non-generic symbols exported from the given crate."]
    #[doc = ""]
    #[doc = " This is separate from exported_generic_symbols to avoid having"]
    #[doc = " to deserialize all non-generic symbols too for upstream crates"]
    #[doc = " in the upstream_monomorphizations query."]
    #[doc = ""]
    #[doc =
    " - All names contained in `exported_non_generic_symbols(cnum)` are"]
    #[doc =
    "   guaranteed to correspond to a publicly visible symbol in `cnum`"]
    #[doc = "   machine code."]
    #[doc =
    " - The `exported_non_generic_symbols` and `exported_generic_symbols`"]
    #[doc = "   sets of different crates do not intersect."]
    exported_non_generic_symbols,

    #[doc = " The list of generic symbols exported from the given crate."]
    #[doc = ""]
    #[doc = " - All names contained in `exported_generic_symbols(cnum)` are"]
    #[doc =
    "   guaranteed to correspond to a publicly visible symbol in `cnum`"]
    #[doc = "   machine code."]
    #[doc =
    " - The `exported_non_generic_symbols` and `exported_generic_symbols`"]
    #[doc = "   sets of different crates do not intersect."]
    exported_generic_symbols,

    #[doc =
    "[query description - consider adding a doc-comment!] collect_and_partition_mono_items"]
    collect_and_partition_mono_items,

    #[doc =
    "[query description - consider adding a doc-comment!] determining whether  `tcx.def_path_str(def_id)`  needs codegen"]
    is_codegened_item,

    #[doc =
    "[query description - consider adding a doc-comment!] getting codegen unit `{sym}`"]
    codegen_unit,

    #[doc =
    "[query description - consider adding a doc-comment!] optimization level used by backend"]
    backend_optimization_level,

    #[doc = " Return the filenames where output artefacts shall be stored."]
    #[doc = ""]
    #[doc =
    " This query returns an `&Arc` because codegen backends need the value even after the `TyCtxt`"]
    #[doc = " has been destroyed."]
    output_filenames,

    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc = " Do not call this query directly: Invoke `normalize` instead."]
    #[doc = ""]
    #[doc = " </div>"]
    normalize_canonicalized_projection,

    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc = " Do not call this query directly: Invoke `normalize` instead."]
    #[doc = ""]
    #[doc = " </div>"]
    normalize_canonicalized_free_alias,

    #[doc = " <div class=\"warning\">"]
    #[doc = ""]
    #[doc = " Do not call this query directly: Invoke `normalize` instead."]
    #[doc = ""]
    #[doc = " </div>"]
    normalize_canonicalized_inherent_projection,

    #[doc =
    " Do not call this query directly: invoke `try_normalize_erasing_regions` instead."]
    try_normalize_generic_arg_after_erasing_regions,

    #[doc =
    "[query description - consider adding a doc-comment!] computing implied outlives bounds for  `key.0.canonical.value.value.ty`  (hack disabled = {:?})"]
    implied_outlives_bounds,

    #[doc = " Do not call this query directly:"]
    #[doc =
    " invoke `DropckOutlives::new(dropped_ty)).fully_perform(typeck.infcx)` instead."]
    dropck_outlives,

    #[doc =
    " Do not call this query directly: invoke `infcx.predicate_may_hold()` or"]
    #[doc = " `infcx.predicate_must_hold()` instead."]
    evaluate_obligation,

    #[doc = " Do not call this query directly: part of the `Eq` type-op"]
    type_op_ascribe_user_type,

    #[doc =
    " Do not call this query directly: part of the `ProvePredicate` type-op"]
    type_op_prove_predicate,

    #[doc =
    " Do not call this query directly: part of the `Normalize` type-op"]
    type_op_normalize_ty,

    #[doc =
    " Do not call this query directly: part of the `Normalize` type-op"]
    type_op_normalize_clause,

    #[doc =
    " Do not call this query directly: part of the `Normalize` type-op"]
    type_op_normalize_poly_fn_sig,

    #[doc =
    " Do not call this query directly: part of the `Normalize` type-op"]
    type_op_normalize_fn_sig,

    #[doc =
    "[query description - consider adding a doc-comment!] checking impossible instantiated predicates:  `tcx.def_path_str(key.0)` "]
    instantiate_and_check_impossible_predicates,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if  `tcx.def_path_str(key.1)`  is impossible to reference within  `tcx.def_path_str(key.0)` "]
    is_impossible_associated_item,

    #[doc =
    "[query description - consider adding a doc-comment!] computing autoderef types for  `goal.canonical.value.value.self_ty` "]
    method_autoderef_steps,

    #[doc = " Used by `-Znext-solver` to compute proof trees."]
    evaluate_root_goal_for_proof_tree_raw,

    #[doc =
    " Returns the Rust target features for the current target. These are not always the same as LLVM target features!"]
    rust_target_features,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up implied target features"]
    implied_target_features,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up enabled feature gates"]
    features_query,

    #[doc =
    "[query description - consider adding a doc-comment!] the ast before macro expansion and name resolution"]
    crate_for_resolver,

    #[doc = " Attempt to resolve the given `DefId` to an `Instance`, for the"]
    #[doc = " given generics args (`GenericArgsRef`), returning one of:"]
    #[doc = "  * `Ok(Some(instance))` on success"]
    #[doc = "  * `Ok(None)` when the `GenericArgsRef` are still too generic,"]
    #[doc = "    and therefore don\'t allow finding the final `Instance`"]
    #[doc =
    "  * `Err(ErrorGuaranteed)` when the `Instance` resolution process"]
    #[doc =
    "    couldn\'t complete due to errors elsewhere - this is distinct"]
    #[doc =
    "    from `Ok(None)` to avoid misleading diagnostics when an error"]
    #[doc = "    has already been/will be emitted, for the original cause."]
    resolve_instance_raw,

    #[doc =
    "[query description - consider adding a doc-comment!] revealing opaque types in `{:?}`"]
    reveal_opaque_types_in_bounds,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up limits"]
    limits,

    #[doc =
    " Performs an HIR-based well-formed check on the item with the given `HirId`. If"]
    #[doc =
    " we get an `Unimplemented` error that matches the provided `Predicate`, return"]
    #[doc = " the cause of the newly created obligation."]
    #[doc = ""]
    #[doc =
    " This is only used by error-reporting code to get a better cause (in particular, a better"]
    #[doc =
    " span) for an *existing* error. Therefore, it is best-effort, and may never handle"]
    #[doc =
    " all of the cases that the normal `ty::Ty`-based wfcheck does. This is fine,"]
    #[doc = " because the `ty::Ty`-based wfcheck is always run."]
    diagnostic_hir_wf_check,

    #[doc =
    " The list of backend features computed from CLI flags (`-Ctarget-cpu`, `-Ctarget-feature`,"]
    #[doc = " `--target` and similar)."]
    global_backend_features,

    #[doc =
    "[query description - consider adding a doc-comment!] checking validity requirement for  `key.1.value` :  `key.0` "]
    check_validity_requirement,

    #[doc =
    " This takes the def-id of an associated item from a impl of a trait,"]
    #[doc =
    " and checks its validity against the trait item it corresponds to."]
    #[doc = ""]
    #[doc = " Any other def id will ICE."]
    compare_impl_item,

    #[doc =
    "[query description - consider adding a doc-comment!] deducing parameter attributes for  `tcx.def_path_str(def_id)` "]
    deduced_param_attrs,

    #[doc =
    "[query description - consider adding a doc-comment!] resolutions for documentation links for a module"]
    doc_link_resolutions,

    #[doc =
    "[query description - consider adding a doc-comment!] traits in scope for documentation links for a module"]
    doc_link_traits_in_scope,

    #[doc =
    " Get all item paths that were stripped by a `#[cfg]` in a particular crate."]
    #[doc =
    " Should not be called for the local crate before the resolver outputs are created, as it"]
    #[doc = " is only fed there."]
    stripped_cfg_items,

    #[doc =
    "[query description - consider adding a doc-comment!] check whether the item has a `where Self: Sized` bound"]
    generics_require_sized_self,

    #[doc =
    "[query description - consider adding a doc-comment!] whether the item should be made inlinable across crates"]
    cross_crate_inlinable,

    #[doc = " Perform monomorphization-time checking on this item."]
    #[doc =
    " This is used for lints/errors that can only be checked once the instance is fully"]
    #[doc = " monomorphized."]
    check_mono_item,

    #[doc =
    " Builds the set of functions that should be skipped for the move-size check."]
    skip_move_check_fns,

    #[doc =
    "[query description - consider adding a doc-comment!] collecting items used by  `key.0` "]
    items_of_instance,

    #[doc =
    "[query description - consider adding a doc-comment!] estimating codegen size of  `key` "]
    size_estimate,

    #[doc =
    "[query description - consider adding a doc-comment!] looking up anon const kind of  `tcx.def_path_str(def_id)` "]
    anon_const_kind,

    #[doc =
    "[query description - consider adding a doc-comment!] checking if  `tcx.def_path_str(def_id)`  is a trivial const"]
    trivial_const,

    #[doc = " Checks for the nearest `#[sanitize(xyz = \"off\")]` or"]
    #[doc =
    " `#[sanitize(xyz = \"on\")]` on this def and any enclosing defs, up to the"]
    #[doc = " crate root."]
    #[doc = ""]
    #[doc = " Returns the sanitizer settings for this def."]
    sanitizer_settings_for,

    #[doc =
    "[query description - consider adding a doc-comment!] check externally implementable items"]
    check_externally_implementable_items,

    #[doc = " Returns a list of all `externally implementable items` crate."]
    externally_implementable_items,
}
#[allow(non_upper_case_globals)]
pub mod dep_kinds {
    use super::*;
    pub const Null: DepKind = DepKind::new(DepKindDefs::Null as u16);
    pub const Red: DepKind = DepKind::new(DepKindDefs::Red as u16);
    pub const SideEffect: DepKind =
        DepKind::new(DepKindDefs::SideEffect as u16);
    pub const AnonZeroDeps: DepKind =
        DepKind::new(DepKindDefs::AnonZeroDeps as u16);
    pub const TraitSelect: DepKind =
        DepKind::new(DepKindDefs::TraitSelect as u16);
    pub const CompileCodegenUnit: DepKind =
        DepKind::new(DepKindDefs::CompileCodegenUnit as u16);
    pub const CompileMonoItem: DepKind =
        DepKind::new(DepKindDefs::CompileMonoItem as u16);
    pub const Metadata: DepKind = DepKind::new(DepKindDefs::Metadata as u16);
    pub const derive_macro_expansion: DepKind =
        DepKind::new(DepKindDefs::derive_macro_expansion as u16);
    pub const trigger_delayed_bug: DepKind =
        DepKind::new(DepKindDefs::trigger_delayed_bug as u16);
    pub const registered_tools: DepKind =
        DepKind::new(DepKindDefs::registered_tools as u16);
    pub const early_lint_checks: DepKind =
        DepKind::new(DepKindDefs::early_lint_checks as u16);
    pub const env_var_os: DepKind =
        DepKind::new(DepKindDefs::env_var_os as u16);
    pub const resolutions: DepKind =
        DepKind::new(DepKindDefs::resolutions as u16);
    pub const resolver_for_lowering_raw: DepKind =
        DepKind::new(DepKindDefs::resolver_for_lowering_raw as u16);
    pub const source_span: DepKind =
        DepKind::new(DepKindDefs::source_span as u16);
    pub const hir_crate: DepKind =
        DepKind::new(DepKindDefs::hir_crate as u16);
    pub const hir_crate_items: DepKind =
        DepKind::new(DepKindDefs::hir_crate_items as u16);
    pub const hir_module_items: DepKind =
        DepKind::new(DepKindDefs::hir_module_items as u16);
    pub const local_def_id_to_hir_id: DepKind =
        DepKind::new(DepKindDefs::local_def_id_to_hir_id as u16);
    pub const hir_owner_parent_q: DepKind =
        DepKind::new(DepKindDefs::hir_owner_parent_q as u16);
    pub const opt_hir_owner_nodes: DepKind =
        DepKind::new(DepKindDefs::opt_hir_owner_nodes as u16);
    pub const hir_attr_map: DepKind =
        DepKind::new(DepKindDefs::hir_attr_map as u16);
    pub const opt_ast_lowering_delayed_lints: DepKind =
        DepKind::new(DepKindDefs::opt_ast_lowering_delayed_lints as u16);
    pub const const_param_default: DepKind =
        DepKind::new(DepKindDefs::const_param_default as u16);
    pub const const_of_item: DepKind =
        DepKind::new(DepKindDefs::const_of_item as u16);
    pub const type_of: DepKind = DepKind::new(DepKindDefs::type_of as u16);
    pub const type_of_opaque: DepKind =
        DepKind::new(DepKindDefs::type_of_opaque as u16);
    pub const type_of_opaque_hir_typeck: DepKind =
        DepKind::new(DepKindDefs::type_of_opaque_hir_typeck as u16);
    pub const type_alias_is_lazy: DepKind =
        DepKind::new(DepKindDefs::type_alias_is_lazy as u16);
    pub const collect_return_position_impl_trait_in_trait_tys: DepKind =
        DepKind::new(DepKindDefs::collect_return_position_impl_trait_in_trait_tys
                as u16);
    pub const opaque_ty_origin: DepKind =
        DepKind::new(DepKindDefs::opaque_ty_origin as u16);
    pub const unsizing_params_for_adt: DepKind =
        DepKind::new(DepKindDefs::unsizing_params_for_adt as u16);
    pub const analysis: DepKind = DepKind::new(DepKindDefs::analysis as u16);
    pub const check_expectations: DepKind =
        DepKind::new(DepKindDefs::check_expectations as u16);
    pub const generics_of: DepKind =
        DepKind::new(DepKindDefs::generics_of as u16);
    pub const predicates_of: DepKind =
        DepKind::new(DepKindDefs::predicates_of as u16);
    pub const opaque_types_defined_by: DepKind =
        DepKind::new(DepKindDefs::opaque_types_defined_by as u16);
    pub const nested_bodies_within: DepKind =
        DepKind::new(DepKindDefs::nested_bodies_within as u16);
    pub const explicit_item_bounds: DepKind =
        DepKind::new(DepKindDefs::explicit_item_bounds as u16);
    pub const explicit_item_self_bounds: DepKind =
        DepKind::new(DepKindDefs::explicit_item_self_bounds as u16);
    pub const item_bounds: DepKind =
        DepKind::new(DepKindDefs::item_bounds as u16);
    pub const item_self_bounds: DepKind =
        DepKind::new(DepKindDefs::item_self_bounds as u16);
    pub const item_non_self_bounds: DepKind =
        DepKind::new(DepKindDefs::item_non_self_bounds as u16);
    pub const impl_super_outlives: DepKind =
        DepKind::new(DepKindDefs::impl_super_outlives as u16);
    pub const native_libraries: DepKind =
        DepKind::new(DepKindDefs::native_libraries as u16);
    pub const shallow_lint_levels_on: DepKind =
        DepKind::new(DepKindDefs::shallow_lint_levels_on as u16);
    pub const lint_expectations: DepKind =
        DepKind::new(DepKindDefs::lint_expectations as u16);
    pub const lints_that_dont_need_to_run: DepKind =
        DepKind::new(DepKindDefs::lints_that_dont_need_to_run as u16);
    pub const expn_that_defined: DepKind =
        DepKind::new(DepKindDefs::expn_that_defined as u16);
    pub const is_panic_runtime: DepKind =
        DepKind::new(DepKindDefs::is_panic_runtime as u16);
    pub const representability: DepKind =
        DepKind::new(DepKindDefs::representability as u16);
    pub const representability_adt_ty: DepKind =
        DepKind::new(DepKindDefs::representability_adt_ty as u16);
    pub const params_in_repr: DepKind =
        DepKind::new(DepKindDefs::params_in_repr as u16);
    pub const thir_body: DepKind =
        DepKind::new(DepKindDefs::thir_body as u16);
    pub const mir_keys: DepKind = DepKind::new(DepKindDefs::mir_keys as u16);
    pub const mir_const_qualif: DepKind =
        DepKind::new(DepKindDefs::mir_const_qualif as u16);
    pub const mir_built: DepKind =
        DepKind::new(DepKindDefs::mir_built as u16);
    pub const thir_abstract_const: DepKind =
        DepKind::new(DepKindDefs::thir_abstract_const as u16);
    pub const mir_drops_elaborated_and_const_checked: DepKind =
        DepKind::new(DepKindDefs::mir_drops_elaborated_and_const_checked as
                u16);
    pub const mir_for_ctfe: DepKind =
        DepKind::new(DepKindDefs::mir_for_ctfe as u16);
    pub const mir_promoted: DepKind =
        DepKind::new(DepKindDefs::mir_promoted as u16);
    pub const closure_typeinfo: DepKind =
        DepKind::new(DepKindDefs::closure_typeinfo as u16);
    pub const closure_saved_names_of_captured_variables: DepKind =
        DepKind::new(DepKindDefs::closure_saved_names_of_captured_variables as
                u16);
    pub const mir_coroutine_witnesses: DepKind =
        DepKind::new(DepKindDefs::mir_coroutine_witnesses as u16);
    pub const check_coroutine_obligations: DepKind =
        DepKind::new(DepKindDefs::check_coroutine_obligations as u16);
    pub const check_potentially_region_dependent_goals: DepKind =
        DepKind::new(DepKindDefs::check_potentially_region_dependent_goals as
                u16);
    pub const optimized_mir: DepKind =
        DepKind::new(DepKindDefs::optimized_mir as u16);
    pub const coverage_attr_on: DepKind =
        DepKind::new(DepKindDefs::coverage_attr_on as u16);
    pub const coverage_ids_info: DepKind =
        DepKind::new(DepKindDefs::coverage_ids_info as u16);
    pub const promoted_mir: DepKind =
        DepKind::new(DepKindDefs::promoted_mir as u16);
    pub const erase_and_anonymize_regions_ty: DepKind =
        DepKind::new(DepKindDefs::erase_and_anonymize_regions_ty as u16);
    pub const wasm_import_module_map: DepKind =
        DepKind::new(DepKindDefs::wasm_import_module_map as u16);
    pub const trait_explicit_predicates_and_bounds: DepKind =
        DepKind::new(DepKindDefs::trait_explicit_predicates_and_bounds as
                u16);
    pub const explicit_predicates_of: DepKind =
        DepKind::new(DepKindDefs::explicit_predicates_of as u16);
    pub const inferred_outlives_of: DepKind =
        DepKind::new(DepKindDefs::inferred_outlives_of as u16);
    pub const explicit_super_predicates_of: DepKind =
        DepKind::new(DepKindDefs::explicit_super_predicates_of as u16);
    pub const explicit_implied_predicates_of: DepKind =
        DepKind::new(DepKindDefs::explicit_implied_predicates_of as u16);
    pub const explicit_supertraits_containing_assoc_item: DepKind =
        DepKind::new(DepKindDefs::explicit_supertraits_containing_assoc_item
                as u16);
    pub const const_conditions: DepKind =
        DepKind::new(DepKindDefs::const_conditions as u16);
    pub const explicit_implied_const_bounds: DepKind =
        DepKind::new(DepKindDefs::explicit_implied_const_bounds as u16);
    pub const type_param_predicates: DepKind =
        DepKind::new(DepKindDefs::type_param_predicates as u16);
    pub const trait_def: DepKind =
        DepKind::new(DepKindDefs::trait_def as u16);
    pub const adt_def: DepKind = DepKind::new(DepKindDefs::adt_def as u16);
    pub const adt_destructor: DepKind =
        DepKind::new(DepKindDefs::adt_destructor as u16);
    pub const adt_async_destructor: DepKind =
        DepKind::new(DepKindDefs::adt_async_destructor as u16);
    pub const adt_sizedness_constraint: DepKind =
        DepKind::new(DepKindDefs::adt_sizedness_constraint as u16);
    pub const adt_dtorck_constraint: DepKind =
        DepKind::new(DepKindDefs::adt_dtorck_constraint as u16);
    pub const constness: DepKind =
        DepKind::new(DepKindDefs::constness as u16);
    pub const asyncness: DepKind =
        DepKind::new(DepKindDefs::asyncness as u16);
    pub const is_promotable_const_fn: DepKind =
        DepKind::new(DepKindDefs::is_promotable_const_fn as u16);
    pub const coroutine_by_move_body_def_id: DepKind =
        DepKind::new(DepKindDefs::coroutine_by_move_body_def_id as u16);
    pub const coroutine_kind: DepKind =
        DepKind::new(DepKindDefs::coroutine_kind as u16);
    pub const coroutine_for_closure: DepKind =
        DepKind::new(DepKindDefs::coroutine_for_closure as u16);
    pub const coroutine_hidden_types: DepKind =
        DepKind::new(DepKindDefs::coroutine_hidden_types as u16);
    pub const crate_variances: DepKind =
        DepKind::new(DepKindDefs::crate_variances as u16);
    pub const variances_of: DepKind =
        DepKind::new(DepKindDefs::variances_of as u16);
    pub const inferred_outlives_crate: DepKind =
        DepKind::new(DepKindDefs::inferred_outlives_crate as u16);
    pub const associated_item_def_ids: DepKind =
        DepKind::new(DepKindDefs::associated_item_def_ids as u16);
    pub const associated_item: DepKind =
        DepKind::new(DepKindDefs::associated_item as u16);
    pub const associated_items: DepKind =
        DepKind::new(DepKindDefs::associated_items as u16);
    pub const impl_item_implementor_ids: DepKind =
        DepKind::new(DepKindDefs::impl_item_implementor_ids as u16);
    pub const associated_types_for_impl_traits_in_trait_or_impl: DepKind =
        DepKind::new(DepKindDefs::associated_types_for_impl_traits_in_trait_or_impl
                as u16);
    pub const impl_trait_header: DepKind =
        DepKind::new(DepKindDefs::impl_trait_header as u16);
    pub const impl_self_is_guaranteed_unsized: DepKind =
        DepKind::new(DepKindDefs::impl_self_is_guaranteed_unsized as u16);
    pub const inherent_impls: DepKind =
        DepKind::new(DepKindDefs::inherent_impls as u16);
    pub const incoherent_impls: DepKind =
        DepKind::new(DepKindDefs::incoherent_impls as u16);
    pub const check_transmutes: DepKind =
        DepKind::new(DepKindDefs::check_transmutes as u16);
    pub const check_unsafety: DepKind =
        DepKind::new(DepKindDefs::check_unsafety as u16);
    pub const check_tail_calls: DepKind =
        DepKind::new(DepKindDefs::check_tail_calls as u16);
    pub const assumed_wf_types: DepKind =
        DepKind::new(DepKindDefs::assumed_wf_types as u16);
    pub const assumed_wf_types_for_rpitit: DepKind =
        DepKind::new(DepKindDefs::assumed_wf_types_for_rpitit as u16);
    pub const fn_sig: DepKind = DepKind::new(DepKindDefs::fn_sig as u16);
    pub const lint_mod: DepKind = DepKind::new(DepKindDefs::lint_mod as u16);
    pub const check_unused_traits: DepKind =
        DepKind::new(DepKindDefs::check_unused_traits as u16);
    pub const check_mod_attrs: DepKind =
        DepKind::new(DepKindDefs::check_mod_attrs as u16);
    pub const check_mod_unstable_api_usage: DepKind =
        DepKind::new(DepKindDefs::check_mod_unstable_api_usage as u16);
    pub const check_mod_privacy: DepKind =
        DepKind::new(DepKindDefs::check_mod_privacy as u16);
    pub const check_liveness: DepKind =
        DepKind::new(DepKindDefs::check_liveness as u16);
    pub const live_symbols_and_ignored_derived_traits: DepKind =
        DepKind::new(DepKindDefs::live_symbols_and_ignored_derived_traits as
                u16);
    pub const check_mod_deathness: DepKind =
        DepKind::new(DepKindDefs::check_mod_deathness as u16);
    pub const check_type_wf: DepKind =
        DepKind::new(DepKindDefs::check_type_wf as u16);
    pub const coerce_unsized_info: DepKind =
        DepKind::new(DepKindDefs::coerce_unsized_info as u16);
    pub const typeck: DepKind = DepKind::new(DepKindDefs::typeck as u16);
    pub const used_trait_imports: DepKind =
        DepKind::new(DepKindDefs::used_trait_imports as u16);
    pub const coherent_trait: DepKind =
        DepKind::new(DepKindDefs::coherent_trait as u16);
    pub const mir_borrowck: DepKind =
        DepKind::new(DepKindDefs::mir_borrowck as u16);
    pub const crate_inherent_impls: DepKind =
        DepKind::new(DepKindDefs::crate_inherent_impls as u16);
    pub const crate_inherent_impls_validity_check: DepKind =
        DepKind::new(DepKindDefs::crate_inherent_impls_validity_check as u16);
    pub const crate_inherent_impls_overlap_check: DepKind =
        DepKind::new(DepKindDefs::crate_inherent_impls_overlap_check as u16);
    pub const orphan_check_impl: DepKind =
        DepKind::new(DepKindDefs::orphan_check_impl as u16);
    pub const mir_callgraph_cyclic: DepKind =
        DepKind::new(DepKindDefs::mir_callgraph_cyclic as u16);
    pub const mir_inliner_callees: DepKind =
        DepKind::new(DepKindDefs::mir_inliner_callees as u16);
    pub const tag_for_variant: DepKind =
        DepKind::new(DepKindDefs::tag_for_variant as u16);
    pub const eval_to_allocation_raw: DepKind =
        DepKind::new(DepKindDefs::eval_to_allocation_raw as u16);
    pub const eval_static_initializer: DepKind =
        DepKind::new(DepKindDefs::eval_static_initializer as u16);
    pub const eval_to_const_value_raw: DepKind =
        DepKind::new(DepKindDefs::eval_to_const_value_raw as u16);
    pub const eval_to_valtree: DepKind =
        DepKind::new(DepKindDefs::eval_to_valtree as u16);
    pub const valtree_to_const_val: DepKind =
        DepKind::new(DepKindDefs::valtree_to_const_val as u16);
    pub const lit_to_const: DepKind =
        DepKind::new(DepKindDefs::lit_to_const as u16);
    pub const check_match: DepKind =
        DepKind::new(DepKindDefs::check_match as u16);
    pub const effective_visibilities: DepKind =
        DepKind::new(DepKindDefs::effective_visibilities as u16);
    pub const check_private_in_public: DepKind =
        DepKind::new(DepKindDefs::check_private_in_public as u16);
    pub const reachable_set: DepKind =
        DepKind::new(DepKindDefs::reachable_set as u16);
    pub const region_scope_tree: DepKind =
        DepKind::new(DepKindDefs::region_scope_tree as u16);
    pub const mir_shims: DepKind =
        DepKind::new(DepKindDefs::mir_shims as u16);
    pub const symbol_name: DepKind =
        DepKind::new(DepKindDefs::symbol_name as u16);
    pub const def_kind: DepKind = DepKind::new(DepKindDefs::def_kind as u16);
    pub const def_span: DepKind = DepKind::new(DepKindDefs::def_span as u16);
    pub const def_ident_span: DepKind =
        DepKind::new(DepKindDefs::def_ident_span as u16);
    pub const ty_span: DepKind = DepKind::new(DepKindDefs::ty_span as u16);
    pub const lookup_stability: DepKind =
        DepKind::new(DepKindDefs::lookup_stability as u16);
    pub const lookup_const_stability: DepKind =
        DepKind::new(DepKindDefs::lookup_const_stability as u16);
    pub const lookup_default_body_stability: DepKind =
        DepKind::new(DepKindDefs::lookup_default_body_stability as u16);
    pub const should_inherit_track_caller: DepKind =
        DepKind::new(DepKindDefs::should_inherit_track_caller as u16);
    pub const inherited_align: DepKind =
        DepKind::new(DepKindDefs::inherited_align as u16);
    pub const lookup_deprecation_entry: DepKind =
        DepKind::new(DepKindDefs::lookup_deprecation_entry as u16);
    pub const is_doc_hidden: DepKind =
        DepKind::new(DepKindDefs::is_doc_hidden as u16);
    pub const is_doc_notable_trait: DepKind =
        DepKind::new(DepKindDefs::is_doc_notable_trait as u16);
    pub const attrs_for_def: DepKind =
        DepKind::new(DepKindDefs::attrs_for_def as u16);
    pub const codegen_fn_attrs: DepKind =
        DepKind::new(DepKindDefs::codegen_fn_attrs as u16);
    pub const asm_target_features: DepKind =
        DepKind::new(DepKindDefs::asm_target_features as u16);
    pub const fn_arg_idents: DepKind =
        DepKind::new(DepKindDefs::fn_arg_idents as u16);
    pub const rendered_const: DepKind =
        DepKind::new(DepKindDefs::rendered_const as u16);
    pub const rendered_precise_capturing_args: DepKind =
        DepKind::new(DepKindDefs::rendered_precise_capturing_args as u16);
    pub const impl_parent: DepKind =
        DepKind::new(DepKindDefs::impl_parent as u16);
    pub const is_ctfe_mir_available: DepKind =
        DepKind::new(DepKindDefs::is_ctfe_mir_available as u16);
    pub const is_mir_available: DepKind =
        DepKind::new(DepKindDefs::is_mir_available as u16);
    pub const own_existential_vtable_entries: DepKind =
        DepKind::new(DepKindDefs::own_existential_vtable_entries as u16);
    pub const vtable_entries: DepKind =
        DepKind::new(DepKindDefs::vtable_entries as u16);
    pub const first_method_vtable_slot: DepKind =
        DepKind::new(DepKindDefs::first_method_vtable_slot as u16);
    pub const supertrait_vtable_slot: DepKind =
        DepKind::new(DepKindDefs::supertrait_vtable_slot as u16);
    pub const vtable_allocation: DepKind =
        DepKind::new(DepKindDefs::vtable_allocation as u16);
    pub const codegen_select_candidate: DepKind =
        DepKind::new(DepKindDefs::codegen_select_candidate as u16);
    pub const all_local_trait_impls: DepKind =
        DepKind::new(DepKindDefs::all_local_trait_impls as u16);
    pub const local_trait_impls: DepKind =
        DepKind::new(DepKindDefs::local_trait_impls as u16);
    pub const trait_impls_of: DepKind =
        DepKind::new(DepKindDefs::trait_impls_of as u16);
    pub const specialization_graph_of: DepKind =
        DepKind::new(DepKindDefs::specialization_graph_of as u16);
    pub const dyn_compatibility_violations: DepKind =
        DepKind::new(DepKindDefs::dyn_compatibility_violations as u16);
    pub const is_dyn_compatible: DepKind =
        DepKind::new(DepKindDefs::is_dyn_compatible as u16);
    pub const param_env: DepKind =
        DepKind::new(DepKindDefs::param_env as u16);
    pub const typing_env_normalized_for_post_analysis: DepKind =
        DepKind::new(DepKindDefs::typing_env_normalized_for_post_analysis as
                u16);
    pub const is_copy_raw: DepKind =
        DepKind::new(DepKindDefs::is_copy_raw as u16);
    pub const is_use_cloned_raw: DepKind =
        DepKind::new(DepKindDefs::is_use_cloned_raw as u16);
    pub const is_sized_raw: DepKind =
        DepKind::new(DepKindDefs::is_sized_raw as u16);
    pub const is_freeze_raw: DepKind =
        DepKind::new(DepKindDefs::is_freeze_raw as u16);
    pub const is_unpin_raw: DepKind =
        DepKind::new(DepKindDefs::is_unpin_raw as u16);
    pub const is_async_drop_raw: DepKind =
        DepKind::new(DepKindDefs::is_async_drop_raw as u16);
    pub const needs_drop_raw: DepKind =
        DepKind::new(DepKindDefs::needs_drop_raw as u16);
    pub const needs_async_drop_raw: DepKind =
        DepKind::new(DepKindDefs::needs_async_drop_raw as u16);
    pub const has_significant_drop_raw: DepKind =
        DepKind::new(DepKindDefs::has_significant_drop_raw as u16);
    pub const has_structural_eq_impl: DepKind =
        DepKind::new(DepKindDefs::has_structural_eq_impl as u16);
    pub const adt_drop_tys: DepKind =
        DepKind::new(DepKindDefs::adt_drop_tys as u16);
    pub const adt_async_drop_tys: DepKind =
        DepKind::new(DepKindDefs::adt_async_drop_tys as u16);
    pub const adt_significant_drop_tys: DepKind =
        DepKind::new(DepKindDefs::adt_significant_drop_tys as u16);
    pub const list_significant_drop_tys: DepKind =
        DepKind::new(DepKindDefs::list_significant_drop_tys as u16);
    pub const layout_of: DepKind =
        DepKind::new(DepKindDefs::layout_of as u16);
    pub const fn_abi_of_fn_ptr: DepKind =
        DepKind::new(DepKindDefs::fn_abi_of_fn_ptr as u16);
    pub const fn_abi_of_instance: DepKind =
        DepKind::new(DepKindDefs::fn_abi_of_instance as u16);
    pub const dylib_dependency_formats: DepKind =
        DepKind::new(DepKindDefs::dylib_dependency_formats as u16);
    pub const dependency_formats: DepKind =
        DepKind::new(DepKindDefs::dependency_formats as u16);
    pub const is_compiler_builtins: DepKind =
        DepKind::new(DepKindDefs::is_compiler_builtins as u16);
    pub const has_global_allocator: DepKind =
        DepKind::new(DepKindDefs::has_global_allocator as u16);
    pub const has_alloc_error_handler: DepKind =
        DepKind::new(DepKindDefs::has_alloc_error_handler as u16);
    pub const has_panic_handler: DepKind =
        DepKind::new(DepKindDefs::has_panic_handler as u16);
    pub const is_profiler_runtime: DepKind =
        DepKind::new(DepKindDefs::is_profiler_runtime as u16);
    pub const has_ffi_unwind_calls: DepKind =
        DepKind::new(DepKindDefs::has_ffi_unwind_calls as u16);
    pub const required_panic_strategy: DepKind =
        DepKind::new(DepKindDefs::required_panic_strategy as u16);
    pub const panic_in_drop_strategy: DepKind =
        DepKind::new(DepKindDefs::panic_in_drop_strategy as u16);
    pub const is_no_builtins: DepKind =
        DepKind::new(DepKindDefs::is_no_builtins as u16);
    pub const symbol_mangling_version: DepKind =
        DepKind::new(DepKindDefs::symbol_mangling_version as u16);
    pub const extern_crate: DepKind =
        DepKind::new(DepKindDefs::extern_crate as u16);
    pub const specialization_enabled_in: DepKind =
        DepKind::new(DepKindDefs::specialization_enabled_in as u16);
    pub const specializes: DepKind =
        DepKind::new(DepKindDefs::specializes as u16);
    pub const in_scope_traits_map: DepKind =
        DepKind::new(DepKindDefs::in_scope_traits_map as u16);
    pub const defaultness: DepKind =
        DepKind::new(DepKindDefs::defaultness as u16);
    pub const default_field: DepKind =
        DepKind::new(DepKindDefs::default_field as u16);
    pub const check_well_formed: DepKind =
        DepKind::new(DepKindDefs::check_well_formed as u16);
    pub const enforce_impl_non_lifetime_params_are_constrained: DepKind =
        DepKind::new(DepKindDefs::enforce_impl_non_lifetime_params_are_constrained
                as u16);
    pub const reachable_non_generics: DepKind =
        DepKind::new(DepKindDefs::reachable_non_generics as u16);
    pub const is_reachable_non_generic: DepKind =
        DepKind::new(DepKindDefs::is_reachable_non_generic as u16);
    pub const is_unreachable_local_definition: DepKind =
        DepKind::new(DepKindDefs::is_unreachable_local_definition as u16);
    pub const upstream_monomorphizations: DepKind =
        DepKind::new(DepKindDefs::upstream_monomorphizations as u16);
    pub const upstream_monomorphizations_for: DepKind =
        DepKind::new(DepKindDefs::upstream_monomorphizations_for as u16);
    pub const upstream_drop_glue_for: DepKind =
        DepKind::new(DepKindDefs::upstream_drop_glue_for as u16);
    pub const upstream_async_drop_glue_for: DepKind =
        DepKind::new(DepKindDefs::upstream_async_drop_glue_for as u16);
    pub const foreign_modules: DepKind =
        DepKind::new(DepKindDefs::foreign_modules as u16);
    pub const clashing_extern_declarations: DepKind =
        DepKind::new(DepKindDefs::clashing_extern_declarations as u16);
    pub const entry_fn: DepKind = DepKind::new(DepKindDefs::entry_fn as u16);
    pub const proc_macro_decls_static: DepKind =
        DepKind::new(DepKindDefs::proc_macro_decls_static as u16);
    pub const crate_hash: DepKind =
        DepKind::new(DepKindDefs::crate_hash as u16);
    pub const crate_host_hash: DepKind =
        DepKind::new(DepKindDefs::crate_host_hash as u16);
    pub const extra_filename: DepKind =
        DepKind::new(DepKindDefs::extra_filename as u16);
    pub const crate_extern_paths: DepKind =
        DepKind::new(DepKindDefs::crate_extern_paths as u16);
    pub const implementations_of_trait: DepKind =
        DepKind::new(DepKindDefs::implementations_of_trait as u16);
    pub const crate_incoherent_impls: DepKind =
        DepKind::new(DepKindDefs::crate_incoherent_impls as u16);
    pub const native_library: DepKind =
        DepKind::new(DepKindDefs::native_library as u16);
    pub const inherit_sig_for_delegation_item: DepKind =
        DepKind::new(DepKindDefs::inherit_sig_for_delegation_item as u16);
    pub const resolve_bound_vars: DepKind =
        DepKind::new(DepKindDefs::resolve_bound_vars as u16);
    pub const named_variable_map: DepKind =
        DepKind::new(DepKindDefs::named_variable_map as u16);
    pub const is_late_bound_map: DepKind =
        DepKind::new(DepKindDefs::is_late_bound_map as u16);
    pub const object_lifetime_default: DepKind =
        DepKind::new(DepKindDefs::object_lifetime_default as u16);
    pub const late_bound_vars_map: DepKind =
        DepKind::new(DepKindDefs::late_bound_vars_map as u16);
    pub const opaque_captured_lifetimes: DepKind =
        DepKind::new(DepKindDefs::opaque_captured_lifetimes as u16);
    pub const visibility: DepKind =
        DepKind::new(DepKindDefs::visibility as u16);
    pub const inhabited_predicate_adt: DepKind =
        DepKind::new(DepKindDefs::inhabited_predicate_adt as u16);
    pub const inhabited_predicate_type: DepKind =
        DepKind::new(DepKindDefs::inhabited_predicate_type as u16);
    pub const dep_kind: DepKind = DepKind::new(DepKindDefs::dep_kind as u16);
    pub const crate_name: DepKind =
        DepKind::new(DepKindDefs::crate_name as u16);
    pub const module_children: DepKind =
        DepKind::new(DepKindDefs::module_children as u16);
    pub const num_extern_def_ids: DepKind =
        DepKind::new(DepKindDefs::num_extern_def_ids as u16);
    pub const lib_features: DepKind =
        DepKind::new(DepKindDefs::lib_features as u16);
    pub const stability_implications: DepKind =
        DepKind::new(DepKindDefs::stability_implications as u16);
    pub const intrinsic_raw: DepKind =
        DepKind::new(DepKindDefs::intrinsic_raw as u16);
    pub const get_lang_items: DepKind =
        DepKind::new(DepKindDefs::get_lang_items as u16);
    pub const all_diagnostic_items: DepKind =
        DepKind::new(DepKindDefs::all_diagnostic_items as u16);
    pub const defined_lang_items: DepKind =
        DepKind::new(DepKindDefs::defined_lang_items as u16);
    pub const diagnostic_items: DepKind =
        DepKind::new(DepKindDefs::diagnostic_items as u16);
    pub const missing_lang_items: DepKind =
        DepKind::new(DepKindDefs::missing_lang_items as u16);
    pub const visible_parent_map: DepKind =
        DepKind::new(DepKindDefs::visible_parent_map as u16);
    pub const trimmed_def_paths: DepKind =
        DepKind::new(DepKindDefs::trimmed_def_paths as u16);
    pub const missing_extern_crate_item: DepKind =
        DepKind::new(DepKindDefs::missing_extern_crate_item as u16);
    pub const used_crate_source: DepKind =
        DepKind::new(DepKindDefs::used_crate_source as u16);
    pub const debugger_visualizers: DepKind =
        DepKind::new(DepKindDefs::debugger_visualizers as u16);
    pub const postorder_cnums: DepKind =
        DepKind::new(DepKindDefs::postorder_cnums as u16);
    pub const is_private_dep: DepKind =
        DepKind::new(DepKindDefs::is_private_dep as u16);
    pub const allocator_kind: DepKind =
        DepKind::new(DepKindDefs::allocator_kind as u16);
    pub const alloc_error_handler_kind: DepKind =
        DepKind::new(DepKindDefs::alloc_error_handler_kind as u16);
    pub const upvars_mentioned: DepKind =
        DepKind::new(DepKindDefs::upvars_mentioned as u16);
    pub const crates: DepKind = DepKind::new(DepKindDefs::crates as u16);
    pub const used_crates: DepKind =
        DepKind::new(DepKindDefs::used_crates as u16);
    pub const duplicate_crate_names: DepKind =
        DepKind::new(DepKindDefs::duplicate_crate_names as u16);
    pub const traits: DepKind = DepKind::new(DepKindDefs::traits as u16);
    pub const trait_impls_in_crate: DepKind =
        DepKind::new(DepKindDefs::trait_impls_in_crate as u16);
    pub const stable_order_of_exportable_impls: DepKind =
        DepKind::new(DepKindDefs::stable_order_of_exportable_impls as u16);
    pub const exportable_items: DepKind =
        DepKind::new(DepKindDefs::exportable_items as u16);
    pub const exported_non_generic_symbols: DepKind =
        DepKind::new(DepKindDefs::exported_non_generic_symbols as u16);
    pub const exported_generic_symbols: DepKind =
        DepKind::new(DepKindDefs::exported_generic_symbols as u16);
    pub const collect_and_partition_mono_items: DepKind =
        DepKind::new(DepKindDefs::collect_and_partition_mono_items as u16);
    pub const is_codegened_item: DepKind =
        DepKind::new(DepKindDefs::is_codegened_item as u16);
    pub const codegen_unit: DepKind =
        DepKind::new(DepKindDefs::codegen_unit as u16);
    pub const backend_optimization_level: DepKind =
        DepKind::new(DepKindDefs::backend_optimization_level as u16);
    pub const output_filenames: DepKind =
        DepKind::new(DepKindDefs::output_filenames as u16);
    pub const normalize_canonicalized_projection: DepKind =
        DepKind::new(DepKindDefs::normalize_canonicalized_projection as u16);
    pub const normalize_canonicalized_free_alias: DepKind =
        DepKind::new(DepKindDefs::normalize_canonicalized_free_alias as u16);
    pub const normalize_canonicalized_inherent_projection: DepKind =
        DepKind::new(DepKindDefs::normalize_canonicalized_inherent_projection
                as u16);
    pub const try_normalize_generic_arg_after_erasing_regions: DepKind =
        DepKind::new(DepKindDefs::try_normalize_generic_arg_after_erasing_regions
                as u16);
    pub const implied_outlives_bounds: DepKind =
        DepKind::new(DepKindDefs::implied_outlives_bounds as u16);
    pub const dropck_outlives: DepKind =
        DepKind::new(DepKindDefs::dropck_outlives as u16);
    pub const evaluate_obligation: DepKind =
        DepKind::new(DepKindDefs::evaluate_obligation as u16);
    pub const type_op_ascribe_user_type: DepKind =
        DepKind::new(DepKindDefs::type_op_ascribe_user_type as u16);
    pub const type_op_prove_predicate: DepKind =
        DepKind::new(DepKindDefs::type_op_prove_predicate as u16);
    pub const type_op_normalize_ty: DepKind =
        DepKind::new(DepKindDefs::type_op_normalize_ty as u16);
    pub const type_op_normalize_clause: DepKind =
        DepKind::new(DepKindDefs::type_op_normalize_clause as u16);
    pub const type_op_normalize_poly_fn_sig: DepKind =
        DepKind::new(DepKindDefs::type_op_normalize_poly_fn_sig as u16);
    pub const type_op_normalize_fn_sig: DepKind =
        DepKind::new(DepKindDefs::type_op_normalize_fn_sig as u16);
    pub const instantiate_and_check_impossible_predicates: DepKind =
        DepKind::new(DepKindDefs::instantiate_and_check_impossible_predicates
                as u16);
    pub const is_impossible_associated_item: DepKind =
        DepKind::new(DepKindDefs::is_impossible_associated_item as u16);
    pub const method_autoderef_steps: DepKind =
        DepKind::new(DepKindDefs::method_autoderef_steps as u16);
    pub const evaluate_root_goal_for_proof_tree_raw: DepKind =
        DepKind::new(DepKindDefs::evaluate_root_goal_for_proof_tree_raw as
                u16);
    pub const rust_target_features: DepKind =
        DepKind::new(DepKindDefs::rust_target_features as u16);
    pub const implied_target_features: DepKind =
        DepKind::new(DepKindDefs::implied_target_features as u16);
    pub const features_query: DepKind =
        DepKind::new(DepKindDefs::features_query as u16);
    pub const crate_for_resolver: DepKind =
        DepKind::new(DepKindDefs::crate_for_resolver as u16);
    pub const resolve_instance_raw: DepKind =
        DepKind::new(DepKindDefs::resolve_instance_raw as u16);
    pub const reveal_opaque_types_in_bounds: DepKind =
        DepKind::new(DepKindDefs::reveal_opaque_types_in_bounds as u16);
    pub const limits: DepKind = DepKind::new(DepKindDefs::limits as u16);
    pub const diagnostic_hir_wf_check: DepKind =
        DepKind::new(DepKindDefs::diagnostic_hir_wf_check as u16);
    pub const global_backend_features: DepKind =
        DepKind::new(DepKindDefs::global_backend_features as u16);
    pub const check_validity_requirement: DepKind =
        DepKind::new(DepKindDefs::check_validity_requirement as u16);
    pub const compare_impl_item: DepKind =
        DepKind::new(DepKindDefs::compare_impl_item as u16);
    pub const deduced_param_attrs: DepKind =
        DepKind::new(DepKindDefs::deduced_param_attrs as u16);
    pub const doc_link_resolutions: DepKind =
        DepKind::new(DepKindDefs::doc_link_resolutions as u16);
    pub const doc_link_traits_in_scope: DepKind =
        DepKind::new(DepKindDefs::doc_link_traits_in_scope as u16);
    pub const stripped_cfg_items: DepKind =
        DepKind::new(DepKindDefs::stripped_cfg_items as u16);
    pub const generics_require_sized_self: DepKind =
        DepKind::new(DepKindDefs::generics_require_sized_self as u16);
    pub const cross_crate_inlinable: DepKind =
        DepKind::new(DepKindDefs::cross_crate_inlinable as u16);
    pub const check_mono_item: DepKind =
        DepKind::new(DepKindDefs::check_mono_item as u16);
    pub const skip_move_check_fns: DepKind =
        DepKind::new(DepKindDefs::skip_move_check_fns as u16);
    pub const items_of_instance: DepKind =
        DepKind::new(DepKindDefs::items_of_instance as u16);
    pub const size_estimate: DepKind =
        DepKind::new(DepKindDefs::size_estimate as u16);
    pub const anon_const_kind: DepKind =
        DepKind::new(DepKindDefs::anon_const_kind as u16);
    pub const trivial_const: DepKind =
        DepKind::new(DepKindDefs::trivial_const as u16);
    pub const sanitizer_settings_for: DepKind =
        DepKind::new(DepKindDefs::sanitizer_settings_for as u16);
    pub const check_externally_implementable_items: DepKind =
        DepKind::new(DepKindDefs::check_externally_implementable_items as
                u16);
    pub const externally_implementable_items: DepKind =
        DepKind::new(DepKindDefs::externally_implementable_items as u16);
}
pub(crate) const DEP_KIND_VARIANTS: u16 =
    {
        let deps =
            &[dep_kinds::Null, dep_kinds::Red, dep_kinds::SideEffect,
                        dep_kinds::AnonZeroDeps, dep_kinds::TraitSelect,
                        dep_kinds::CompileCodegenUnit, dep_kinds::CompileMonoItem,
                        dep_kinds::Metadata, dep_kinds::derive_macro_expansion,
                        dep_kinds::trigger_delayed_bug, dep_kinds::registered_tools,
                        dep_kinds::early_lint_checks, dep_kinds::env_var_os,
                        dep_kinds::resolutions,
                        dep_kinds::resolver_for_lowering_raw,
                        dep_kinds::source_span, dep_kinds::hir_crate,
                        dep_kinds::hir_crate_items, dep_kinds::hir_module_items,
                        dep_kinds::local_def_id_to_hir_id,
                        dep_kinds::hir_owner_parent_q,
                        dep_kinds::opt_hir_owner_nodes, dep_kinds::hir_attr_map,
                        dep_kinds::opt_ast_lowering_delayed_lints,
                        dep_kinds::const_param_default, dep_kinds::const_of_item,
                        dep_kinds::type_of, dep_kinds::type_of_opaque,
                        dep_kinds::type_of_opaque_hir_typeck,
                        dep_kinds::type_alias_is_lazy,
                        dep_kinds::collect_return_position_impl_trait_in_trait_tys,
                        dep_kinds::opaque_ty_origin,
                        dep_kinds::unsizing_params_for_adt, dep_kinds::analysis,
                        dep_kinds::check_expectations, dep_kinds::generics_of,
                        dep_kinds::predicates_of,
                        dep_kinds::opaque_types_defined_by,
                        dep_kinds::nested_bodies_within,
                        dep_kinds::explicit_item_bounds,
                        dep_kinds::explicit_item_self_bounds,
                        dep_kinds::item_bounds, dep_kinds::item_self_bounds,
                        dep_kinds::item_non_self_bounds,
                        dep_kinds::impl_super_outlives, dep_kinds::native_libraries,
                        dep_kinds::shallow_lint_levels_on,
                        dep_kinds::lint_expectations,
                        dep_kinds::lints_that_dont_need_to_run,
                        dep_kinds::expn_that_defined, dep_kinds::is_panic_runtime,
                        dep_kinds::representability,
                        dep_kinds::representability_adt_ty,
                        dep_kinds::params_in_repr, dep_kinds::thir_body,
                        dep_kinds::mir_keys, dep_kinds::mir_const_qualif,
                        dep_kinds::mir_built, dep_kinds::thir_abstract_const,
                        dep_kinds::mir_drops_elaborated_and_const_checked,
                        dep_kinds::mir_for_ctfe, dep_kinds::mir_promoted,
                        dep_kinds::closure_typeinfo,
                        dep_kinds::closure_saved_names_of_captured_variables,
                        dep_kinds::mir_coroutine_witnesses,
                        dep_kinds::check_coroutine_obligations,
                        dep_kinds::check_potentially_region_dependent_goals,
                        dep_kinds::optimized_mir, dep_kinds::coverage_attr_on,
                        dep_kinds::coverage_ids_info, dep_kinds::promoted_mir,
                        dep_kinds::erase_and_anonymize_regions_ty,
                        dep_kinds::wasm_import_module_map,
                        dep_kinds::trait_explicit_predicates_and_bounds,
                        dep_kinds::explicit_predicates_of,
                        dep_kinds::inferred_outlives_of,
                        dep_kinds::explicit_super_predicates_of,
                        dep_kinds::explicit_implied_predicates_of,
                        dep_kinds::explicit_supertraits_containing_assoc_item,
                        dep_kinds::const_conditions,
                        dep_kinds::explicit_implied_const_bounds,
                        dep_kinds::type_param_predicates, dep_kinds::trait_def,
                        dep_kinds::adt_def, dep_kinds::adt_destructor,
                        dep_kinds::adt_async_destructor,
                        dep_kinds::adt_sizedness_constraint,
                        dep_kinds::adt_dtorck_constraint, dep_kinds::constness,
                        dep_kinds::asyncness, dep_kinds::is_promotable_const_fn,
                        dep_kinds::coroutine_by_move_body_def_id,
                        dep_kinds::coroutine_kind, dep_kinds::coroutine_for_closure,
                        dep_kinds::coroutine_hidden_types,
                        dep_kinds::crate_variances, dep_kinds::variances_of,
                        dep_kinds::inferred_outlives_crate,
                        dep_kinds::associated_item_def_ids,
                        dep_kinds::associated_item, dep_kinds::associated_items,
                        dep_kinds::impl_item_implementor_ids,
                        dep_kinds::associated_types_for_impl_traits_in_trait_or_impl,
                        dep_kinds::impl_trait_header,
                        dep_kinds::impl_self_is_guaranteed_unsized,
                        dep_kinds::inherent_impls, dep_kinds::incoherent_impls,
                        dep_kinds::check_transmutes, dep_kinds::check_unsafety,
                        dep_kinds::check_tail_calls, dep_kinds::assumed_wf_types,
                        dep_kinds::assumed_wf_types_for_rpitit, dep_kinds::fn_sig,
                        dep_kinds::lint_mod, dep_kinds::check_unused_traits,
                        dep_kinds::check_mod_attrs,
                        dep_kinds::check_mod_unstable_api_usage,
                        dep_kinds::check_mod_privacy, dep_kinds::check_liveness,
                        dep_kinds::live_symbols_and_ignored_derived_traits,
                        dep_kinds::check_mod_deathness, dep_kinds::check_type_wf,
                        dep_kinds::coerce_unsized_info, dep_kinds::typeck,
                        dep_kinds::used_trait_imports, dep_kinds::coherent_trait,
                        dep_kinds::mir_borrowck, dep_kinds::crate_inherent_impls,
                        dep_kinds::crate_inherent_impls_validity_check,
                        dep_kinds::crate_inherent_impls_overlap_check,
                        dep_kinds::orphan_check_impl,
                        dep_kinds::mir_callgraph_cyclic,
                        dep_kinds::mir_inliner_callees, dep_kinds::tag_for_variant,
                        dep_kinds::eval_to_allocation_raw,
                        dep_kinds::eval_static_initializer,
                        dep_kinds::eval_to_const_value_raw,
                        dep_kinds::eval_to_valtree, dep_kinds::valtree_to_const_val,
                        dep_kinds::lit_to_const, dep_kinds::check_match,
                        dep_kinds::effective_visibilities,
                        dep_kinds::check_private_in_public,
                        dep_kinds::reachable_set, dep_kinds::region_scope_tree,
                        dep_kinds::mir_shims, dep_kinds::symbol_name,
                        dep_kinds::def_kind, dep_kinds::def_span,
                        dep_kinds::def_ident_span, dep_kinds::ty_span,
                        dep_kinds::lookup_stability,
                        dep_kinds::lookup_const_stability,
                        dep_kinds::lookup_default_body_stability,
                        dep_kinds::should_inherit_track_caller,
                        dep_kinds::inherited_align,
                        dep_kinds::lookup_deprecation_entry,
                        dep_kinds::is_doc_hidden, dep_kinds::is_doc_notable_trait,
                        dep_kinds::attrs_for_def, dep_kinds::codegen_fn_attrs,
                        dep_kinds::asm_target_features, dep_kinds::fn_arg_idents,
                        dep_kinds::rendered_const,
                        dep_kinds::rendered_precise_capturing_args,
                        dep_kinds::impl_parent, dep_kinds::is_ctfe_mir_available,
                        dep_kinds::is_mir_available,
                        dep_kinds::own_existential_vtable_entries,
                        dep_kinds::vtable_entries,
                        dep_kinds::first_method_vtable_slot,
                        dep_kinds::supertrait_vtable_slot,
                        dep_kinds::vtable_allocation,
                        dep_kinds::codegen_select_candidate,
                        dep_kinds::all_local_trait_impls,
                        dep_kinds::local_trait_impls, dep_kinds::trait_impls_of,
                        dep_kinds::specialization_graph_of,
                        dep_kinds::dyn_compatibility_violations,
                        dep_kinds::is_dyn_compatible, dep_kinds::param_env,
                        dep_kinds::typing_env_normalized_for_post_analysis,
                        dep_kinds::is_copy_raw, dep_kinds::is_use_cloned_raw,
                        dep_kinds::is_sized_raw, dep_kinds::is_freeze_raw,
                        dep_kinds::is_unpin_raw, dep_kinds::is_async_drop_raw,
                        dep_kinds::needs_drop_raw, dep_kinds::needs_async_drop_raw,
                        dep_kinds::has_significant_drop_raw,
                        dep_kinds::has_structural_eq_impl, dep_kinds::adt_drop_tys,
                        dep_kinds::adt_async_drop_tys,
                        dep_kinds::adt_significant_drop_tys,
                        dep_kinds::list_significant_drop_tys, dep_kinds::layout_of,
                        dep_kinds::fn_abi_of_fn_ptr, dep_kinds::fn_abi_of_instance,
                        dep_kinds::dylib_dependency_formats,
                        dep_kinds::dependency_formats,
                        dep_kinds::is_compiler_builtins,
                        dep_kinds::has_global_allocator,
                        dep_kinds::has_alloc_error_handler,
                        dep_kinds::has_panic_handler,
                        dep_kinds::is_profiler_runtime,
                        dep_kinds::has_ffi_unwind_calls,
                        dep_kinds::required_panic_strategy,
                        dep_kinds::panic_in_drop_strategy,
                        dep_kinds::is_no_builtins,
                        dep_kinds::symbol_mangling_version, dep_kinds::extern_crate,
                        dep_kinds::specialization_enabled_in,
                        dep_kinds::specializes, dep_kinds::in_scope_traits_map,
                        dep_kinds::defaultness, dep_kinds::default_field,
                        dep_kinds::check_well_formed,
                        dep_kinds::enforce_impl_non_lifetime_params_are_constrained,
                        dep_kinds::reachable_non_generics,
                        dep_kinds::is_reachable_non_generic,
                        dep_kinds::is_unreachable_local_definition,
                        dep_kinds::upstream_monomorphizations,
                        dep_kinds::upstream_monomorphizations_for,
                        dep_kinds::upstream_drop_glue_for,
                        dep_kinds::upstream_async_drop_glue_for,
                        dep_kinds::foreign_modules,
                        dep_kinds::clashing_extern_declarations,
                        dep_kinds::entry_fn, dep_kinds::proc_macro_decls_static,
                        dep_kinds::crate_hash, dep_kinds::crate_host_hash,
                        dep_kinds::extra_filename, dep_kinds::crate_extern_paths,
                        dep_kinds::implementations_of_trait,
                        dep_kinds::crate_incoherent_impls,
                        dep_kinds::native_library,
                        dep_kinds::inherit_sig_for_delegation_item,
                        dep_kinds::resolve_bound_vars,
                        dep_kinds::named_variable_map, dep_kinds::is_late_bound_map,
                        dep_kinds::object_lifetime_default,
                        dep_kinds::late_bound_vars_map,
                        dep_kinds::opaque_captured_lifetimes, dep_kinds::visibility,
                        dep_kinds::inhabited_predicate_adt,
                        dep_kinds::inhabited_predicate_type, dep_kinds::dep_kind,
                        dep_kinds::crate_name, dep_kinds::module_children,
                        dep_kinds::num_extern_def_ids, dep_kinds::lib_features,
                        dep_kinds::stability_implications, dep_kinds::intrinsic_raw,
                        dep_kinds::get_lang_items, dep_kinds::all_diagnostic_items,
                        dep_kinds::defined_lang_items, dep_kinds::diagnostic_items,
                        dep_kinds::missing_lang_items,
                        dep_kinds::visible_parent_map, dep_kinds::trimmed_def_paths,
                        dep_kinds::missing_extern_crate_item,
                        dep_kinds::used_crate_source,
                        dep_kinds::debugger_visualizers, dep_kinds::postorder_cnums,
                        dep_kinds::is_private_dep, dep_kinds::allocator_kind,
                        dep_kinds::alloc_error_handler_kind,
                        dep_kinds::upvars_mentioned, dep_kinds::crates,
                        dep_kinds::used_crates, dep_kinds::duplicate_crate_names,
                        dep_kinds::traits, dep_kinds::trait_impls_in_crate,
                        dep_kinds::stable_order_of_exportable_impls,
                        dep_kinds::exportable_items,
                        dep_kinds::exported_non_generic_symbols,
                        dep_kinds::exported_generic_symbols,
                        dep_kinds::collect_and_partition_mono_items,
                        dep_kinds::is_codegened_item, dep_kinds::codegen_unit,
                        dep_kinds::backend_optimization_level,
                        dep_kinds::output_filenames,
                        dep_kinds::normalize_canonicalized_projection,
                        dep_kinds::normalize_canonicalized_free_alias,
                        dep_kinds::normalize_canonicalized_inherent_projection,
                        dep_kinds::try_normalize_generic_arg_after_erasing_regions,
                        dep_kinds::implied_outlives_bounds,
                        dep_kinds::dropck_outlives, dep_kinds::evaluate_obligation,
                        dep_kinds::type_op_ascribe_user_type,
                        dep_kinds::type_op_prove_predicate,
                        dep_kinds::type_op_normalize_ty,
                        dep_kinds::type_op_normalize_clause,
                        dep_kinds::type_op_normalize_poly_fn_sig,
                        dep_kinds::type_op_normalize_fn_sig,
                        dep_kinds::instantiate_and_check_impossible_predicates,
                        dep_kinds::is_impossible_associated_item,
                        dep_kinds::method_autoderef_steps,
                        dep_kinds::evaluate_root_goal_for_proof_tree_raw,
                        dep_kinds::rust_target_features,
                        dep_kinds::implied_target_features,
                        dep_kinds::features_query, dep_kinds::crate_for_resolver,
                        dep_kinds::resolve_instance_raw,
                        dep_kinds::reveal_opaque_types_in_bounds, dep_kinds::limits,
                        dep_kinds::diagnostic_hir_wf_check,
                        dep_kinds::global_backend_features,
                        dep_kinds::check_validity_requirement,
                        dep_kinds::compare_impl_item,
                        dep_kinds::deduced_param_attrs,
                        dep_kinds::doc_link_resolutions,
                        dep_kinds::doc_link_traits_in_scope,
                        dep_kinds::stripped_cfg_items,
                        dep_kinds::generics_require_sized_self,
                        dep_kinds::cross_crate_inlinable,
                        dep_kinds::check_mono_item, dep_kinds::skip_move_check_fns,
                        dep_kinds::items_of_instance, dep_kinds::size_estimate,
                        dep_kinds::anon_const_kind, dep_kinds::trivial_const,
                        dep_kinds::sanitizer_settings_for,
                        dep_kinds::check_externally_implementable_items,
                        dep_kinds::externally_implementable_items];
        let mut i = 0;
        while i < deps.len() {
            if i != deps[i].as_usize() {
                ::core::panicking::panic("explicit panic");
            }
            i += 1;
        }
        deps.len() as u16
    };
/// List containing the name of each dep kind as a static string,
/// indexable by `DepKind`.
pub(crate) const DEP_KIND_NAMES: &[&str] =
    &[self::label_strs::Null, self::label_strs::Red,
                self::label_strs::SideEffect, self::label_strs::AnonZeroDeps,
                self::label_strs::TraitSelect,
                self::label_strs::CompileCodegenUnit,
                self::label_strs::CompileMonoItem, self::label_strs::Metadata,
                self::label_strs::derive_macro_expansion,
                self::label_strs::trigger_delayed_bug,
                self::label_strs::registered_tools,
                self::label_strs::early_lint_checks,
                self::label_strs::env_var_os, self::label_strs::resolutions,
                self::label_strs::resolver_for_lowering_raw,
                self::label_strs::source_span, self::label_strs::hir_crate,
                self::label_strs::hir_crate_items,
                self::label_strs::hir_module_items,
                self::label_strs::local_def_id_to_hir_id,
                self::label_strs::hir_owner_parent_q,
                self::label_strs::opt_hir_owner_nodes,
                self::label_strs::hir_attr_map,
                self::label_strs::opt_ast_lowering_delayed_lints,
                self::label_strs::const_param_default,
                self::label_strs::const_of_item, self::label_strs::type_of,
                self::label_strs::type_of_opaque,
                self::label_strs::type_of_opaque_hir_typeck,
                self::label_strs::type_alias_is_lazy,
                self::label_strs::collect_return_position_impl_trait_in_trait_tys,
                self::label_strs::opaque_ty_origin,
                self::label_strs::unsizing_params_for_adt,
                self::label_strs::analysis,
                self::label_strs::check_expectations,
                self::label_strs::generics_of,
                self::label_strs::predicates_of,
                self::label_strs::opaque_types_defined_by,
                self::label_strs::nested_bodies_within,
                self::label_strs::explicit_item_bounds,
                self::label_strs::explicit_item_self_bounds,
                self::label_strs::item_bounds,
                self::label_strs::item_self_bounds,
                self::label_strs::item_non_self_bounds,
                self::label_strs::impl_super_outlives,
                self::label_strs::native_libraries,
                self::label_strs::shallow_lint_levels_on,
                self::label_strs::lint_expectations,
                self::label_strs::lints_that_dont_need_to_run,
                self::label_strs::expn_that_defined,
                self::label_strs::is_panic_runtime,
                self::label_strs::representability,
                self::label_strs::representability_adt_ty,
                self::label_strs::params_in_repr, self::label_strs::thir_body,
                self::label_strs::mir_keys,
                self::label_strs::mir_const_qualif,
                self::label_strs::mir_built,
                self::label_strs::thir_abstract_const,
                self::label_strs::mir_drops_elaborated_and_const_checked,
                self::label_strs::mir_for_ctfe,
                self::label_strs::mir_promoted,
                self::label_strs::closure_typeinfo,
                self::label_strs::closure_saved_names_of_captured_variables,
                self::label_strs::mir_coroutine_witnesses,
                self::label_strs::check_coroutine_obligations,
                self::label_strs::check_potentially_region_dependent_goals,
                self::label_strs::optimized_mir,
                self::label_strs::coverage_attr_on,
                self::label_strs::coverage_ids_info,
                self::label_strs::promoted_mir,
                self::label_strs::erase_and_anonymize_regions_ty,
                self::label_strs::wasm_import_module_map,
                self::label_strs::trait_explicit_predicates_and_bounds,
                self::label_strs::explicit_predicates_of,
                self::label_strs::inferred_outlives_of,
                self::label_strs::explicit_super_predicates_of,
                self::label_strs::explicit_implied_predicates_of,
                self::label_strs::explicit_supertraits_containing_assoc_item,
                self::label_strs::const_conditions,
                self::label_strs::explicit_implied_const_bounds,
                self::label_strs::type_param_predicates,
                self::label_strs::trait_def, self::label_strs::adt_def,
                self::label_strs::adt_destructor,
                self::label_strs::adt_async_destructor,
                self::label_strs::adt_sizedness_constraint,
                self::label_strs::adt_dtorck_constraint,
                self::label_strs::constness, self::label_strs::asyncness,
                self::label_strs::is_promotable_const_fn,
                self::label_strs::coroutine_by_move_body_def_id,
                self::label_strs::coroutine_kind,
                self::label_strs::coroutine_for_closure,
                self::label_strs::coroutine_hidden_types,
                self::label_strs::crate_variances,
                self::label_strs::variances_of,
                self::label_strs::inferred_outlives_crate,
                self::label_strs::associated_item_def_ids,
                self::label_strs::associated_item,
                self::label_strs::associated_items,
                self::label_strs::impl_item_implementor_ids,
                self::label_strs::associated_types_for_impl_traits_in_trait_or_impl,
                self::label_strs::impl_trait_header,
                self::label_strs::impl_self_is_guaranteed_unsized,
                self::label_strs::inherent_impls,
                self::label_strs::incoherent_impls,
                self::label_strs::check_transmutes,
                self::label_strs::check_unsafety,
                self::label_strs::check_tail_calls,
                self::label_strs::assumed_wf_types,
                self::label_strs::assumed_wf_types_for_rpitit,
                self::label_strs::fn_sig, self::label_strs::lint_mod,
                self::label_strs::check_unused_traits,
                self::label_strs::check_mod_attrs,
                self::label_strs::check_mod_unstable_api_usage,
                self::label_strs::check_mod_privacy,
                self::label_strs::check_liveness,
                self::label_strs::live_symbols_and_ignored_derived_traits,
                self::label_strs::check_mod_deathness,
                self::label_strs::check_type_wf,
                self::label_strs::coerce_unsized_info,
                self::label_strs::typeck,
                self::label_strs::used_trait_imports,
                self::label_strs::coherent_trait,
                self::label_strs::mir_borrowck,
                self::label_strs::crate_inherent_impls,
                self::label_strs::crate_inherent_impls_validity_check,
                self::label_strs::crate_inherent_impls_overlap_check,
                self::label_strs::orphan_check_impl,
                self::label_strs::mir_callgraph_cyclic,
                self::label_strs::mir_inliner_callees,
                self::label_strs::tag_for_variant,
                self::label_strs::eval_to_allocation_raw,
                self::label_strs::eval_static_initializer,
                self::label_strs::eval_to_const_value_raw,
                self::label_strs::eval_to_valtree,
                self::label_strs::valtree_to_const_val,
                self::label_strs::lit_to_const, self::label_strs::check_match,
                self::label_strs::effective_visibilities,
                self::label_strs::check_private_in_public,
                self::label_strs::reachable_set,
                self::label_strs::region_scope_tree,
                self::label_strs::mir_shims, self::label_strs::symbol_name,
                self::label_strs::def_kind, self::label_strs::def_span,
                self::label_strs::def_ident_span, self::label_strs::ty_span,
                self::label_strs::lookup_stability,
                self::label_strs::lookup_const_stability,
                self::label_strs::lookup_default_body_stability,
                self::label_strs::should_inherit_track_caller,
                self::label_strs::inherited_align,
                self::label_strs::lookup_deprecation_entry,
                self::label_strs::is_doc_hidden,
                self::label_strs::is_doc_notable_trait,
                self::label_strs::attrs_for_def,
                self::label_strs::codegen_fn_attrs,
                self::label_strs::asm_target_features,
                self::label_strs::fn_arg_idents,
                self::label_strs::rendered_const,
                self::label_strs::rendered_precise_capturing_args,
                self::label_strs::impl_parent,
                self::label_strs::is_ctfe_mir_available,
                self::label_strs::is_mir_available,
                self::label_strs::own_existential_vtable_entries,
                self::label_strs::vtable_entries,
                self::label_strs::first_method_vtable_slot,
                self::label_strs::supertrait_vtable_slot,
                self::label_strs::vtable_allocation,
                self::label_strs::codegen_select_candidate,
                self::label_strs::all_local_trait_impls,
                self::label_strs::local_trait_impls,
                self::label_strs::trait_impls_of,
                self::label_strs::specialization_graph_of,
                self::label_strs::dyn_compatibility_violations,
                self::label_strs::is_dyn_compatible,
                self::label_strs::param_env,
                self::label_strs::typing_env_normalized_for_post_analysis,
                self::label_strs::is_copy_raw,
                self::label_strs::is_use_cloned_raw,
                self::label_strs::is_sized_raw,
                self::label_strs::is_freeze_raw,
                self::label_strs::is_unpin_raw,
                self::label_strs::is_async_drop_raw,
                self::label_strs::needs_drop_raw,
                self::label_strs::needs_async_drop_raw,
                self::label_strs::has_significant_drop_raw,
                self::label_strs::has_structural_eq_impl,
                self::label_strs::adt_drop_tys,
                self::label_strs::adt_async_drop_tys,
                self::label_strs::adt_significant_drop_tys,
                self::label_strs::list_significant_drop_tys,
                self::label_strs::layout_of,
                self::label_strs::fn_abi_of_fn_ptr,
                self::label_strs::fn_abi_of_instance,
                self::label_strs::dylib_dependency_formats,
                self::label_strs::dependency_formats,
                self::label_strs::is_compiler_builtins,
                self::label_strs::has_global_allocator,
                self::label_strs::has_alloc_error_handler,
                self::label_strs::has_panic_handler,
                self::label_strs::is_profiler_runtime,
                self::label_strs::has_ffi_unwind_calls,
                self::label_strs::required_panic_strategy,
                self::label_strs::panic_in_drop_strategy,
                self::label_strs::is_no_builtins,
                self::label_strs::symbol_mangling_version,
                self::label_strs::extern_crate,
                self::label_strs::specialization_enabled_in,
                self::label_strs::specializes,
                self::label_strs::in_scope_traits_map,
                self::label_strs::defaultness,
                self::label_strs::default_field,
                self::label_strs::check_well_formed,
                self::label_strs::enforce_impl_non_lifetime_params_are_constrained,
                self::label_strs::reachable_non_generics,
                self::label_strs::is_reachable_non_generic,
                self::label_strs::is_unreachable_local_definition,
                self::label_strs::upstream_monomorphizations,
                self::label_strs::upstream_monomorphizations_for,
                self::label_strs::upstream_drop_glue_for,
                self::label_strs::upstream_async_drop_glue_for,
                self::label_strs::foreign_modules,
                self::label_strs::clashing_extern_declarations,
                self::label_strs::entry_fn,
                self::label_strs::proc_macro_decls_static,
                self::label_strs::crate_hash,
                self::label_strs::crate_host_hash,
                self::label_strs::extra_filename,
                self::label_strs::crate_extern_paths,
                self::label_strs::implementations_of_trait,
                self::label_strs::crate_incoherent_impls,
                self::label_strs::native_library,
                self::label_strs::inherit_sig_for_delegation_item,
                self::label_strs::resolve_bound_vars,
                self::label_strs::named_variable_map,
                self::label_strs::is_late_bound_map,
                self::label_strs::object_lifetime_default,
                self::label_strs::late_bound_vars_map,
                self::label_strs::opaque_captured_lifetimes,
                self::label_strs::visibility,
                self::label_strs::inhabited_predicate_adt,
                self::label_strs::inhabited_predicate_type,
                self::label_strs::dep_kind, self::label_strs::crate_name,
                self::label_strs::module_children,
                self::label_strs::num_extern_def_ids,
                self::label_strs::lib_features,
                self::label_strs::stability_implications,
                self::label_strs::intrinsic_raw,
                self::label_strs::get_lang_items,
                self::label_strs::all_diagnostic_items,
                self::label_strs::defined_lang_items,
                self::label_strs::diagnostic_items,
                self::label_strs::missing_lang_items,
                self::label_strs::visible_parent_map,
                self::label_strs::trimmed_def_paths,
                self::label_strs::missing_extern_crate_item,
                self::label_strs::used_crate_source,
                self::label_strs::debugger_visualizers,
                self::label_strs::postorder_cnums,
                self::label_strs::is_private_dep,
                self::label_strs::allocator_kind,
                self::label_strs::alloc_error_handler_kind,
                self::label_strs::upvars_mentioned, self::label_strs::crates,
                self::label_strs::used_crates,
                self::label_strs::duplicate_crate_names,
                self::label_strs::traits,
                self::label_strs::trait_impls_in_crate,
                self::label_strs::stable_order_of_exportable_impls,
                self::label_strs::exportable_items,
                self::label_strs::exported_non_generic_symbols,
                self::label_strs::exported_generic_symbols,
                self::label_strs::collect_and_partition_mono_items,
                self::label_strs::is_codegened_item,
                self::label_strs::codegen_unit,
                self::label_strs::backend_optimization_level,
                self::label_strs::output_filenames,
                self::label_strs::normalize_canonicalized_projection,
                self::label_strs::normalize_canonicalized_free_alias,
                self::label_strs::normalize_canonicalized_inherent_projection,
                self::label_strs::try_normalize_generic_arg_after_erasing_regions,
                self::label_strs::implied_outlives_bounds,
                self::label_strs::dropck_outlives,
                self::label_strs::evaluate_obligation,
                self::label_strs::type_op_ascribe_user_type,
                self::label_strs::type_op_prove_predicate,
                self::label_strs::type_op_normalize_ty,
                self::label_strs::type_op_normalize_clause,
                self::label_strs::type_op_normalize_poly_fn_sig,
                self::label_strs::type_op_normalize_fn_sig,
                self::label_strs::instantiate_and_check_impossible_predicates,
                self::label_strs::is_impossible_associated_item,
                self::label_strs::method_autoderef_steps,
                self::label_strs::evaluate_root_goal_for_proof_tree_raw,
                self::label_strs::rust_target_features,
                self::label_strs::implied_target_features,
                self::label_strs::features_query,
                self::label_strs::crate_for_resolver,
                self::label_strs::resolve_instance_raw,
                self::label_strs::reveal_opaque_types_in_bounds,
                self::label_strs::limits,
                self::label_strs::diagnostic_hir_wf_check,
                self::label_strs::global_backend_features,
                self::label_strs::check_validity_requirement,
                self::label_strs::compare_impl_item,
                self::label_strs::deduced_param_attrs,
                self::label_strs::doc_link_resolutions,
                self::label_strs::doc_link_traits_in_scope,
                self::label_strs::stripped_cfg_items,
                self::label_strs::generics_require_sized_self,
                self::label_strs::cross_crate_inlinable,
                self::label_strs::check_mono_item,
                self::label_strs::skip_move_check_fns,
                self::label_strs::items_of_instance,
                self::label_strs::size_estimate,
                self::label_strs::anon_const_kind,
                self::label_strs::trivial_const,
                self::label_strs::sanitizer_settings_for,
                self::label_strs::check_externally_implementable_items,
                self::label_strs::externally_implementable_items];
pub(super) fn dep_kind_from_label_string(label: &str) -> Result<DepKind, ()> {
    match label {
        self::label_strs::Null => Ok(self::dep_kinds::Null),
        self::label_strs::Red => Ok(self::dep_kinds::Red),
        self::label_strs::SideEffect => Ok(self::dep_kinds::SideEffect),
        self::label_strs::AnonZeroDeps => Ok(self::dep_kinds::AnonZeroDeps),
        self::label_strs::TraitSelect => Ok(self::dep_kinds::TraitSelect),
        self::label_strs::CompileCodegenUnit =>
            Ok(self::dep_kinds::CompileCodegenUnit),
        self::label_strs::CompileMonoItem =>
            Ok(self::dep_kinds::CompileMonoItem),
        self::label_strs::Metadata => Ok(self::dep_kinds::Metadata),
        self::label_strs::derive_macro_expansion =>
            Ok(self::dep_kinds::derive_macro_expansion),
        self::label_strs::trigger_delayed_bug =>
            Ok(self::dep_kinds::trigger_delayed_bug),
        self::label_strs::registered_tools =>
            Ok(self::dep_kinds::registered_tools),
        self::label_strs::early_lint_checks =>
            Ok(self::dep_kinds::early_lint_checks),
        self::label_strs::env_var_os => Ok(self::dep_kinds::env_var_os),
        self::label_strs::resolutions => Ok(self::dep_kinds::resolutions),
        self::label_strs::resolver_for_lowering_raw =>
            Ok(self::dep_kinds::resolver_for_lowering_raw),
        self::label_strs::source_span => Ok(self::dep_kinds::source_span),
        self::label_strs::hir_crate => Ok(self::dep_kinds::hir_crate),
        self::label_strs::hir_crate_items =>
            Ok(self::dep_kinds::hir_crate_items),
        self::label_strs::hir_module_items =>
            Ok(self::dep_kinds::hir_module_items),
        self::label_strs::local_def_id_to_hir_id =>
            Ok(self::dep_kinds::local_def_id_to_hir_id),
        self::label_strs::hir_owner_parent_q =>
            Ok(self::dep_kinds::hir_owner_parent_q),
        self::label_strs::opt_hir_owner_nodes =>
            Ok(self::dep_kinds::opt_hir_owner_nodes),
        self::label_strs::hir_attr_map => Ok(self::dep_kinds::hir_attr_map),
        self::label_strs::opt_ast_lowering_delayed_lints =>
            Ok(self::dep_kinds::opt_ast_lowering_delayed_lints),
        self::label_strs::const_param_default =>
            Ok(self::dep_kinds::const_param_default),
        self::label_strs::const_of_item => Ok(self::dep_kinds::const_of_item),
        self::label_strs::type_of => Ok(self::dep_kinds::type_of),
        self::label_strs::type_of_opaque =>
            Ok(self::dep_kinds::type_of_opaque),
        self::label_strs::type_of_opaque_hir_typeck =>
            Ok(self::dep_kinds::type_of_opaque_hir_typeck),
        self::label_strs::type_alias_is_lazy =>
            Ok(self::dep_kinds::type_alias_is_lazy),
        self::label_strs::collect_return_position_impl_trait_in_trait_tys =>
            Ok(self::dep_kinds::collect_return_position_impl_trait_in_trait_tys),
        self::label_strs::opaque_ty_origin =>
            Ok(self::dep_kinds::opaque_ty_origin),
        self::label_strs::unsizing_params_for_adt =>
            Ok(self::dep_kinds::unsizing_params_for_adt),
        self::label_strs::analysis => Ok(self::dep_kinds::analysis),
        self::label_strs::check_expectations =>
            Ok(self::dep_kinds::check_expectations),
        self::label_strs::generics_of => Ok(self::dep_kinds::generics_of),
        self::label_strs::predicates_of => Ok(self::dep_kinds::predicates_of),
        self::label_strs::opaque_types_defined_by =>
            Ok(self::dep_kinds::opaque_types_defined_by),
        self::label_strs::nested_bodies_within =>
            Ok(self::dep_kinds::nested_bodies_within),
        self::label_strs::explicit_item_bounds =>
            Ok(self::dep_kinds::explicit_item_bounds),
        self::label_strs::explicit_item_self_bounds =>
            Ok(self::dep_kinds::explicit_item_self_bounds),
        self::label_strs::item_bounds => Ok(self::dep_kinds::item_bounds),
        self::label_strs::item_self_bounds =>
            Ok(self::dep_kinds::item_self_bounds),
        self::label_strs::item_non_self_bounds =>
            Ok(self::dep_kinds::item_non_self_bounds),
        self::label_strs::impl_super_outlives =>
            Ok(self::dep_kinds::impl_super_outlives),
        self::label_strs::native_libraries =>
            Ok(self::dep_kinds::native_libraries),
        self::label_strs::shallow_lint_levels_on =>
            Ok(self::dep_kinds::shallow_lint_levels_on),
        self::label_strs::lint_expectations =>
            Ok(self::dep_kinds::lint_expectations),
        self::label_strs::lints_that_dont_need_to_run =>
            Ok(self::dep_kinds::lints_that_dont_need_to_run),
        self::label_strs::expn_that_defined =>
            Ok(self::dep_kinds::expn_that_defined),
        self::label_strs::is_panic_runtime =>
            Ok(self::dep_kinds::is_panic_runtime),
        self::label_strs::representability =>
            Ok(self::dep_kinds::representability),
        self::label_strs::representability_adt_ty =>
            Ok(self::dep_kinds::representability_adt_ty),
        self::label_strs::params_in_repr =>
            Ok(self::dep_kinds::params_in_repr),
        self::label_strs::thir_body => Ok(self::dep_kinds::thir_body),
        self::label_strs::mir_keys => Ok(self::dep_kinds::mir_keys),
        self::label_strs::mir_const_qualif =>
            Ok(self::dep_kinds::mir_const_qualif),
        self::label_strs::mir_built => Ok(self::dep_kinds::mir_built),
        self::label_strs::thir_abstract_const =>
            Ok(self::dep_kinds::thir_abstract_const),
        self::label_strs::mir_drops_elaborated_and_const_checked =>
            Ok(self::dep_kinds::mir_drops_elaborated_and_const_checked),
        self::label_strs::mir_for_ctfe => Ok(self::dep_kinds::mir_for_ctfe),
        self::label_strs::mir_promoted => Ok(self::dep_kinds::mir_promoted),
        self::label_strs::closure_typeinfo =>
            Ok(self::dep_kinds::closure_typeinfo),
        self::label_strs::closure_saved_names_of_captured_variables =>
            Ok(self::dep_kinds::closure_saved_names_of_captured_variables),
        self::label_strs::mir_coroutine_witnesses =>
            Ok(self::dep_kinds::mir_coroutine_witnesses),
        self::label_strs::check_coroutine_obligations =>
            Ok(self::dep_kinds::check_coroutine_obligations),
        self::label_strs::check_potentially_region_dependent_goals =>
            Ok(self::dep_kinds::check_potentially_region_dependent_goals),
        self::label_strs::optimized_mir => Ok(self::dep_kinds::optimized_mir),
        self::label_strs::coverage_attr_on =>
            Ok(self::dep_kinds::coverage_attr_on),
        self::label_strs::coverage_ids_info =>
            Ok(self::dep_kinds::coverage_ids_info),
        self::label_strs::promoted_mir => Ok(self::dep_kinds::promoted_mir),
        self::label_strs::erase_and_anonymize_regions_ty =>
            Ok(self::dep_kinds::erase_and_anonymize_regions_ty),
        self::label_strs::wasm_import_module_map =>
            Ok(self::dep_kinds::wasm_import_module_map),
        self::label_strs::trait_explicit_predicates_and_bounds =>
            Ok(self::dep_kinds::trait_explicit_predicates_and_bounds),
        self::label_strs::explicit_predicates_of =>
            Ok(self::dep_kinds::explicit_predicates_of),
        self::label_strs::inferred_outlives_of =>
            Ok(self::dep_kinds::inferred_outlives_of),
        self::label_strs::explicit_super_predicates_of =>
            Ok(self::dep_kinds::explicit_super_predicates_of),
        self::label_strs::explicit_implied_predicates_of =>
            Ok(self::dep_kinds::explicit_implied_predicates_of),
        self::label_strs::explicit_supertraits_containing_assoc_item =>
            Ok(self::dep_kinds::explicit_supertraits_containing_assoc_item),
        self::label_strs::const_conditions =>
            Ok(self::dep_kinds::const_conditions),
        self::label_strs::explicit_implied_const_bounds =>
            Ok(self::dep_kinds::explicit_implied_const_bounds),
        self::label_strs::type_param_predicates =>
            Ok(self::dep_kinds::type_param_predicates),
        self::label_strs::trait_def => Ok(self::dep_kinds::trait_def),
        self::label_strs::adt_def => Ok(self::dep_kinds::adt_def),
        self::label_strs::adt_destructor =>
            Ok(self::dep_kinds::adt_destructor),
        self::label_strs::adt_async_destructor =>
            Ok(self::dep_kinds::adt_async_destructor),
        self::label_strs::adt_sizedness_constraint =>
            Ok(self::dep_kinds::adt_sizedness_constraint),
        self::label_strs::adt_dtorck_constraint =>
            Ok(self::dep_kinds::adt_dtorck_constraint),
        self::label_strs::constness => Ok(self::dep_kinds::constness),
        self::label_strs::asyncness => Ok(self::dep_kinds::asyncness),
        self::label_strs::is_promotable_const_fn =>
            Ok(self::dep_kinds::is_promotable_const_fn),
        self::label_strs::coroutine_by_move_body_def_id =>
            Ok(self::dep_kinds::coroutine_by_move_body_def_id),
        self::label_strs::coroutine_kind =>
            Ok(self::dep_kinds::coroutine_kind),
        self::label_strs::coroutine_for_closure =>
            Ok(self::dep_kinds::coroutine_for_closure),
        self::label_strs::coroutine_hidden_types =>
            Ok(self::dep_kinds::coroutine_hidden_types),
        self::label_strs::crate_variances =>
            Ok(self::dep_kinds::crate_variances),
        self::label_strs::variances_of => Ok(self::dep_kinds::variances_of),
        self::label_strs::inferred_outlives_crate =>
            Ok(self::dep_kinds::inferred_outlives_crate),
        self::label_strs::associated_item_def_ids =>
            Ok(self::dep_kinds::associated_item_def_ids),
        self::label_strs::associated_item =>
            Ok(self::dep_kinds::associated_item),
        self::label_strs::associated_items =>
            Ok(self::dep_kinds::associated_items),
        self::label_strs::impl_item_implementor_ids =>
            Ok(self::dep_kinds::impl_item_implementor_ids),
        self::label_strs::associated_types_for_impl_traits_in_trait_or_impl =>
            Ok(self::dep_kinds::associated_types_for_impl_traits_in_trait_or_impl),
        self::label_strs::impl_trait_header =>
            Ok(self::dep_kinds::impl_trait_header),
        self::label_strs::impl_self_is_guaranteed_unsized =>
            Ok(self::dep_kinds::impl_self_is_guaranteed_unsized),
        self::label_strs::inherent_impls =>
            Ok(self::dep_kinds::inherent_impls),
        self::label_strs::incoherent_impls =>
            Ok(self::dep_kinds::incoherent_impls),
        self::label_strs::check_transmutes =>
            Ok(self::dep_kinds::check_transmutes),
        self::label_strs::check_unsafety =>
            Ok(self::dep_kinds::check_unsafety),
        self::label_strs::check_tail_calls =>
            Ok(self::dep_kinds::check_tail_calls),
        self::label_strs::assumed_wf_types =>
            Ok(self::dep_kinds::assumed_wf_types),
        self::label_strs::assumed_wf_types_for_rpitit =>
            Ok(self::dep_kinds::assumed_wf_types_for_rpitit),
        self::label_strs::fn_sig => Ok(self::dep_kinds::fn_sig),
        self::label_strs::lint_mod => Ok(self::dep_kinds::lint_mod),
        self::label_strs::check_unused_traits =>
            Ok(self::dep_kinds::check_unused_traits),
        self::label_strs::check_mod_attrs =>
            Ok(self::dep_kinds::check_mod_attrs),
        self::label_strs::check_mod_unstable_api_usage =>
            Ok(self::dep_kinds::check_mod_unstable_api_usage),
        self::label_strs::check_mod_privacy =>
            Ok(self::dep_kinds::check_mod_privacy),
        self::label_strs::check_liveness =>
            Ok(self::dep_kinds::check_liveness),
        self::label_strs::live_symbols_and_ignored_derived_traits =>
            Ok(self::dep_kinds::live_symbols_and_ignored_derived_traits),
        self::label_strs::check_mod_deathness =>
            Ok(self::dep_kinds::check_mod_deathness),
        self::label_strs::check_type_wf => Ok(self::dep_kinds::check_type_wf),
        self::label_strs::coerce_unsized_info =>
            Ok(self::dep_kinds::coerce_unsized_info),
        self::label_strs::typeck => Ok(self::dep_kinds::typeck),
        self::label_strs::used_trait_imports =>
            Ok(self::dep_kinds::used_trait_imports),
        self::label_strs::coherent_trait =>
            Ok(self::dep_kinds::coherent_trait),
        self::label_strs::mir_borrowck => Ok(self::dep_kinds::mir_borrowck),
        self::label_strs::crate_inherent_impls =>
            Ok(self::dep_kinds::crate_inherent_impls),
        self::label_strs::crate_inherent_impls_validity_check =>
            Ok(self::dep_kinds::crate_inherent_impls_validity_check),
        self::label_strs::crate_inherent_impls_overlap_check =>
            Ok(self::dep_kinds::crate_inherent_impls_overlap_check),
        self::label_strs::orphan_check_impl =>
            Ok(self::dep_kinds::orphan_check_impl),
        self::label_strs::mir_callgraph_cyclic =>
            Ok(self::dep_kinds::mir_callgraph_cyclic),
        self::label_strs::mir_inliner_callees =>
            Ok(self::dep_kinds::mir_inliner_callees),
        self::label_strs::tag_for_variant =>
            Ok(self::dep_kinds::tag_for_variant),
        self::label_strs::eval_to_allocation_raw =>
            Ok(self::dep_kinds::eval_to_allocation_raw),
        self::label_strs::eval_static_initializer =>
            Ok(self::dep_kinds::eval_static_initializer),
        self::label_strs::eval_to_const_value_raw =>
            Ok(self::dep_kinds::eval_to_const_value_raw),
        self::label_strs::eval_to_valtree =>
            Ok(self::dep_kinds::eval_to_valtree),
        self::label_strs::valtree_to_const_val =>
            Ok(self::dep_kinds::valtree_to_const_val),
        self::label_strs::lit_to_const => Ok(self::dep_kinds::lit_to_const),
        self::label_strs::check_match => Ok(self::dep_kinds::check_match),
        self::label_strs::effective_visibilities =>
            Ok(self::dep_kinds::effective_visibilities),
        self::label_strs::check_private_in_public =>
            Ok(self::dep_kinds::check_private_in_public),
        self::label_strs::reachable_set => Ok(self::dep_kinds::reachable_set),
        self::label_strs::region_scope_tree =>
            Ok(self::dep_kinds::region_scope_tree),
        self::label_strs::mir_shims => Ok(self::dep_kinds::mir_shims),
        self::label_strs::symbol_name => Ok(self::dep_kinds::symbol_name),
        self::label_strs::def_kind => Ok(self::dep_kinds::def_kind),
        self::label_strs::def_span => Ok(self::dep_kinds::def_span),
        self::label_strs::def_ident_span =>
            Ok(self::dep_kinds::def_ident_span),
        self::label_strs::ty_span => Ok(self::dep_kinds::ty_span),
        self::label_strs::lookup_stability =>
            Ok(self::dep_kinds::lookup_stability),
        self::label_strs::lookup_const_stability =>
            Ok(self::dep_kinds::lookup_const_stability),
        self::label_strs::lookup_default_body_stability =>
            Ok(self::dep_kinds::lookup_default_body_stability),
        self::label_strs::should_inherit_track_caller =>
            Ok(self::dep_kinds::should_inherit_track_caller),
        self::label_strs::inherited_align =>
            Ok(self::dep_kinds::inherited_align),
        self::label_strs::lookup_deprecation_entry =>
            Ok(self::dep_kinds::lookup_deprecation_entry),
        self::label_strs::is_doc_hidden => Ok(self::dep_kinds::is_doc_hidden),
        self::label_strs::is_doc_notable_trait =>
            Ok(self::dep_kinds::is_doc_notable_trait),
        self::label_strs::attrs_for_def => Ok(self::dep_kinds::attrs_for_def),
        self::label_strs::codegen_fn_attrs =>
            Ok(self::dep_kinds::codegen_fn_attrs),
        self::label_strs::asm_target_features =>
            Ok(self::dep_kinds::asm_target_features),
        self::label_strs::fn_arg_idents => Ok(self::dep_kinds::fn_arg_idents),
        self::label_strs::rendered_const =>
            Ok(self::dep_kinds::rendered_const),
        self::label_strs::rendered_precise_capturing_args =>
            Ok(self::dep_kinds::rendered_precise_capturing_args),
        self::label_strs::impl_parent => Ok(self::dep_kinds::impl_parent),
        self::label_strs::is_ctfe_mir_available =>
            Ok(self::dep_kinds::is_ctfe_mir_available),
        self::label_strs::is_mir_available =>
            Ok(self::dep_kinds::is_mir_available),
        self::label_strs::own_existential_vtable_entries =>
            Ok(self::dep_kinds::own_existential_vtable_entries),
        self::label_strs::vtable_entries =>
            Ok(self::dep_kinds::vtable_entries),
        self::label_strs::first_method_vtable_slot =>
            Ok(self::dep_kinds::first_method_vtable_slot),
        self::label_strs::supertrait_vtable_slot =>
            Ok(self::dep_kinds::supertrait_vtable_slot),
        self::label_strs::vtable_allocation =>
            Ok(self::dep_kinds::vtable_allocation),
        self::label_strs::codegen_select_candidate =>
            Ok(self::dep_kinds::codegen_select_candidate),
        self::label_strs::all_local_trait_impls =>
            Ok(self::dep_kinds::all_local_trait_impls),
        self::label_strs::local_trait_impls =>
            Ok(self::dep_kinds::local_trait_impls),
        self::label_strs::trait_impls_of =>
            Ok(self::dep_kinds::trait_impls_of),
        self::label_strs::specialization_graph_of =>
            Ok(self::dep_kinds::specialization_graph_of),
        self::label_strs::dyn_compatibility_violations =>
            Ok(self::dep_kinds::dyn_compatibility_violations),
        self::label_strs::is_dyn_compatible =>
            Ok(self::dep_kinds::is_dyn_compatible),
        self::label_strs::param_env => Ok(self::dep_kinds::param_env),
        self::label_strs::typing_env_normalized_for_post_analysis =>
            Ok(self::dep_kinds::typing_env_normalized_for_post_analysis),
        self::label_strs::is_copy_raw => Ok(self::dep_kinds::is_copy_raw),
        self::label_strs::is_use_cloned_raw =>
            Ok(self::dep_kinds::is_use_cloned_raw),
        self::label_strs::is_sized_raw => Ok(self::dep_kinds::is_sized_raw),
        self::label_strs::is_freeze_raw => Ok(self::dep_kinds::is_freeze_raw),
        self::label_strs::is_unpin_raw => Ok(self::dep_kinds::is_unpin_raw),
        self::label_strs::is_async_drop_raw =>
            Ok(self::dep_kinds::is_async_drop_raw),
        self::label_strs::needs_drop_raw =>
            Ok(self::dep_kinds::needs_drop_raw),
        self::label_strs::needs_async_drop_raw =>
            Ok(self::dep_kinds::needs_async_drop_raw),
        self::label_strs::has_significant_drop_raw =>
            Ok(self::dep_kinds::has_significant_drop_raw),
        self::label_strs::has_structural_eq_impl =>
            Ok(self::dep_kinds::has_structural_eq_impl),
        self::label_strs::adt_drop_tys => Ok(self::dep_kinds::adt_drop_tys),
        self::label_strs::adt_async_drop_tys =>
            Ok(self::dep_kinds::adt_async_drop_tys),
        self::label_strs::adt_significant_drop_tys =>
            Ok(self::dep_kinds::adt_significant_drop_tys),
        self::label_strs::list_significant_drop_tys =>
            Ok(self::dep_kinds::list_significant_drop_tys),
        self::label_strs::layout_of => Ok(self::dep_kinds::layout_of),
        self::label_strs::fn_abi_of_fn_ptr =>
            Ok(self::dep_kinds::fn_abi_of_fn_ptr),
        self::label_strs::fn_abi_of_instance =>
            Ok(self::dep_kinds::fn_abi_of_instance),
        self::label_strs::dylib_dependency_formats =>
            Ok(self::dep_kinds::dylib_dependency_formats),
        self::label_strs::dependency_formats =>
            Ok(self::dep_kinds::dependency_formats),
        self::label_strs::is_compiler_builtins =>
            Ok(self::dep_kinds::is_compiler_builtins),
        self::label_strs::has_global_allocator =>
            Ok(self::dep_kinds::has_global_allocator),
        self::label_strs::has_alloc_error_handler =>
            Ok(self::dep_kinds::has_alloc_error_handler),
        self::label_strs::has_panic_handler =>
            Ok(self::dep_kinds::has_panic_handler),
        self::label_strs::is_profiler_runtime =>
            Ok(self::dep_kinds::is_profiler_runtime),
        self::label_strs::has_ffi_unwind_calls =>
            Ok(self::dep_kinds::has_ffi_unwind_calls),
        self::label_strs::required_panic_strategy =>
            Ok(self::dep_kinds::required_panic_strategy),
        self::label_strs::panic_in_drop_strategy =>
            Ok(self::dep_kinds::panic_in_drop_strategy),
        self::label_strs::is_no_builtins =>
            Ok(self::dep_kinds::is_no_builtins),
        self::label_strs::symbol_mangling_version =>
            Ok(self::dep_kinds::symbol_mangling_version),
        self::label_strs::extern_crate => Ok(self::dep_kinds::extern_crate),
        self::label_strs::specialization_enabled_in =>
            Ok(self::dep_kinds::specialization_enabled_in),
        self::label_strs::specializes => Ok(self::dep_kinds::specializes),
        self::label_strs::in_scope_traits_map =>
            Ok(self::dep_kinds::in_scope_traits_map),
        self::label_strs::defaultness => Ok(self::dep_kinds::defaultness),
        self::label_strs::default_field => Ok(self::dep_kinds::default_field),
        self::label_strs::check_well_formed =>
            Ok(self::dep_kinds::check_well_formed),
        self::label_strs::enforce_impl_non_lifetime_params_are_constrained =>
            Ok(self::dep_kinds::enforce_impl_non_lifetime_params_are_constrained),
        self::label_strs::reachable_non_generics =>
            Ok(self::dep_kinds::reachable_non_generics),
        self::label_strs::is_reachable_non_generic =>
            Ok(self::dep_kinds::is_reachable_non_generic),
        self::label_strs::is_unreachable_local_definition =>
            Ok(self::dep_kinds::is_unreachable_local_definition),
        self::label_strs::upstream_monomorphizations =>
            Ok(self::dep_kinds::upstream_monomorphizations),
        self::label_strs::upstream_monomorphizations_for =>
            Ok(self::dep_kinds::upstream_monomorphizations_for),
        self::label_strs::upstream_drop_glue_for =>
            Ok(self::dep_kinds::upstream_drop_glue_for),
        self::label_strs::upstream_async_drop_glue_for =>
            Ok(self::dep_kinds::upstream_async_drop_glue_for),
        self::label_strs::foreign_modules =>
            Ok(self::dep_kinds::foreign_modules),
        self::label_strs::clashing_extern_declarations =>
            Ok(self::dep_kinds::clashing_extern_declarations),
        self::label_strs::entry_fn => Ok(self::dep_kinds::entry_fn),
        self::label_strs::proc_macro_decls_static =>
            Ok(self::dep_kinds::proc_macro_decls_static),
        self::label_strs::crate_hash => Ok(self::dep_kinds::crate_hash),
        self::label_strs::crate_host_hash =>
            Ok(self::dep_kinds::crate_host_hash),
        self::label_strs::extra_filename =>
            Ok(self::dep_kinds::extra_filename),
        self::label_strs::crate_extern_paths =>
            Ok(self::dep_kinds::crate_extern_paths),
        self::label_strs::implementations_of_trait =>
            Ok(self::dep_kinds::implementations_of_trait),
        self::label_strs::crate_incoherent_impls =>
            Ok(self::dep_kinds::crate_incoherent_impls),
        self::label_strs::native_library =>
            Ok(self::dep_kinds::native_library),
        self::label_strs::inherit_sig_for_delegation_item =>
            Ok(self::dep_kinds::inherit_sig_for_delegation_item),
        self::label_strs::resolve_bound_vars =>
            Ok(self::dep_kinds::resolve_bound_vars),
        self::label_strs::named_variable_map =>
            Ok(self::dep_kinds::named_variable_map),
        self::label_strs::is_late_bound_map =>
            Ok(self::dep_kinds::is_late_bound_map),
        self::label_strs::object_lifetime_default =>
            Ok(self::dep_kinds::object_lifetime_default),
        self::label_strs::late_bound_vars_map =>
            Ok(self::dep_kinds::late_bound_vars_map),
        self::label_strs::opaque_captured_lifetimes =>
            Ok(self::dep_kinds::opaque_captured_lifetimes),
        self::label_strs::visibility => Ok(self::dep_kinds::visibility),
        self::label_strs::inhabited_predicate_adt =>
            Ok(self::dep_kinds::inhabited_predicate_adt),
        self::label_strs::inhabited_predicate_type =>
            Ok(self::dep_kinds::inhabited_predicate_type),
        self::label_strs::dep_kind => Ok(self::dep_kinds::dep_kind),
        self::label_strs::crate_name => Ok(self::dep_kinds::crate_name),
        self::label_strs::module_children =>
            Ok(self::dep_kinds::module_children),
        self::label_strs::num_extern_def_ids =>
            Ok(self::dep_kinds::num_extern_def_ids),
        self::label_strs::lib_features => Ok(self::dep_kinds::lib_features),
        self::label_strs::stability_implications =>
            Ok(self::dep_kinds::stability_implications),
        self::label_strs::intrinsic_raw => Ok(self::dep_kinds::intrinsic_raw),
        self::label_strs::get_lang_items =>
            Ok(self::dep_kinds::get_lang_items),
        self::label_strs::all_diagnostic_items =>
            Ok(self::dep_kinds::all_diagnostic_items),
        self::label_strs::defined_lang_items =>
            Ok(self::dep_kinds::defined_lang_items),
        self::label_strs::diagnostic_items =>
            Ok(self::dep_kinds::diagnostic_items),
        self::label_strs::missing_lang_items =>
            Ok(self::dep_kinds::missing_lang_items),
        self::label_strs::visible_parent_map =>
            Ok(self::dep_kinds::visible_parent_map),
        self::label_strs::trimmed_def_paths =>
            Ok(self::dep_kinds::trimmed_def_paths),
        self::label_strs::missing_extern_crate_item =>
            Ok(self::dep_kinds::missing_extern_crate_item),
        self::label_strs::used_crate_source =>
            Ok(self::dep_kinds::used_crate_source),
        self::label_strs::debugger_visualizers =>
            Ok(self::dep_kinds::debugger_visualizers),
        self::label_strs::postorder_cnums =>
            Ok(self::dep_kinds::postorder_cnums),
        self::label_strs::is_private_dep =>
            Ok(self::dep_kinds::is_private_dep),
        self::label_strs::allocator_kind =>
            Ok(self::dep_kinds::allocator_kind),
        self::label_strs::alloc_error_handler_kind =>
            Ok(self::dep_kinds::alloc_error_handler_kind),
        self::label_strs::upvars_mentioned =>
            Ok(self::dep_kinds::upvars_mentioned),
        self::label_strs::crates => Ok(self::dep_kinds::crates),
        self::label_strs::used_crates => Ok(self::dep_kinds::used_crates),
        self::label_strs::duplicate_crate_names =>
            Ok(self::dep_kinds::duplicate_crate_names),
        self::label_strs::traits => Ok(self::dep_kinds::traits),
        self::label_strs::trait_impls_in_crate =>
            Ok(self::dep_kinds::trait_impls_in_crate),
        self::label_strs::stable_order_of_exportable_impls =>
            Ok(self::dep_kinds::stable_order_of_exportable_impls),
        self::label_strs::exportable_items =>
            Ok(self::dep_kinds::exportable_items),
        self::label_strs::exported_non_generic_symbols =>
            Ok(self::dep_kinds::exported_non_generic_symbols),
        self::label_strs::exported_generic_symbols =>
            Ok(self::dep_kinds::exported_generic_symbols),
        self::label_strs::collect_and_partition_mono_items =>
            Ok(self::dep_kinds::collect_and_partition_mono_items),
        self::label_strs::is_codegened_item =>
            Ok(self::dep_kinds::is_codegened_item),
        self::label_strs::codegen_unit => Ok(self::dep_kinds::codegen_unit),
        self::label_strs::backend_optimization_level =>
            Ok(self::dep_kinds::backend_optimization_level),
        self::label_strs::output_filenames =>
            Ok(self::dep_kinds::output_filenames),
        self::label_strs::normalize_canonicalized_projection =>
            Ok(self::dep_kinds::normalize_canonicalized_projection),
        self::label_strs::normalize_canonicalized_free_alias =>
            Ok(self::dep_kinds::normalize_canonicalized_free_alias),
        self::label_strs::normalize_canonicalized_inherent_projection =>
            Ok(self::dep_kinds::normalize_canonicalized_inherent_projection),
        self::label_strs::try_normalize_generic_arg_after_erasing_regions =>
            Ok(self::dep_kinds::try_normalize_generic_arg_after_erasing_regions),
        self::label_strs::implied_outlives_bounds =>
            Ok(self::dep_kinds::implied_outlives_bounds),
        self::label_strs::dropck_outlives =>
            Ok(self::dep_kinds::dropck_outlives),
        self::label_strs::evaluate_obligation =>
            Ok(self::dep_kinds::evaluate_obligation),
        self::label_strs::type_op_ascribe_user_type =>
            Ok(self::dep_kinds::type_op_ascribe_user_type),
        self::label_strs::type_op_prove_predicate =>
            Ok(self::dep_kinds::type_op_prove_predicate),
        self::label_strs::type_op_normalize_ty =>
            Ok(self::dep_kinds::type_op_normalize_ty),
        self::label_strs::type_op_normalize_clause =>
            Ok(self::dep_kinds::type_op_normalize_clause),
        self::label_strs::type_op_normalize_poly_fn_sig =>
            Ok(self::dep_kinds::type_op_normalize_poly_fn_sig),
        self::label_strs::type_op_normalize_fn_sig =>
            Ok(self::dep_kinds::type_op_normalize_fn_sig),
        self::label_strs::instantiate_and_check_impossible_predicates =>
            Ok(self::dep_kinds::instantiate_and_check_impossible_predicates),
        self::label_strs::is_impossible_associated_item =>
            Ok(self::dep_kinds::is_impossible_associated_item),
        self::label_strs::method_autoderef_steps =>
            Ok(self::dep_kinds::method_autoderef_steps),
        self::label_strs::evaluate_root_goal_for_proof_tree_raw =>
            Ok(self::dep_kinds::evaluate_root_goal_for_proof_tree_raw),
        self::label_strs::rust_target_features =>
            Ok(self::dep_kinds::rust_target_features),
        self::label_strs::implied_target_features =>
            Ok(self::dep_kinds::implied_target_features),
        self::label_strs::features_query =>
            Ok(self::dep_kinds::features_query),
        self::label_strs::crate_for_resolver =>
            Ok(self::dep_kinds::crate_for_resolver),
        self::label_strs::resolve_instance_raw =>
            Ok(self::dep_kinds::resolve_instance_raw),
        self::label_strs::reveal_opaque_types_in_bounds =>
            Ok(self::dep_kinds::reveal_opaque_types_in_bounds),
        self::label_strs::limits => Ok(self::dep_kinds::limits),
        self::label_strs::diagnostic_hir_wf_check =>
            Ok(self::dep_kinds::diagnostic_hir_wf_check),
        self::label_strs::global_backend_features =>
            Ok(self::dep_kinds::global_backend_features),
        self::label_strs::check_validity_requirement =>
            Ok(self::dep_kinds::check_validity_requirement),
        self::label_strs::compare_impl_item =>
            Ok(self::dep_kinds::compare_impl_item),
        self::label_strs::deduced_param_attrs =>
            Ok(self::dep_kinds::deduced_param_attrs),
        self::label_strs::doc_link_resolutions =>
            Ok(self::dep_kinds::doc_link_resolutions),
        self::label_strs::doc_link_traits_in_scope =>
            Ok(self::dep_kinds::doc_link_traits_in_scope),
        self::label_strs::stripped_cfg_items =>
            Ok(self::dep_kinds::stripped_cfg_items),
        self::label_strs::generics_require_sized_self =>
            Ok(self::dep_kinds::generics_require_sized_self),
        self::label_strs::cross_crate_inlinable =>
            Ok(self::dep_kinds::cross_crate_inlinable),
        self::label_strs::check_mono_item =>
            Ok(self::dep_kinds::check_mono_item),
        self::label_strs::skip_move_check_fns =>
            Ok(self::dep_kinds::skip_move_check_fns),
        self::label_strs::items_of_instance =>
            Ok(self::dep_kinds::items_of_instance),
        self::label_strs::size_estimate => Ok(self::dep_kinds::size_estimate),
        self::label_strs::anon_const_kind =>
            Ok(self::dep_kinds::anon_const_kind),
        self::label_strs::trivial_const => Ok(self::dep_kinds::trivial_const),
        self::label_strs::sanitizer_settings_for =>
            Ok(self::dep_kinds::sanitizer_settings_for),
        self::label_strs::check_externally_implementable_items =>
            Ok(self::dep_kinds::check_externally_implementable_items),
        self::label_strs::externally_implementable_items =>
            Ok(self::dep_kinds::externally_implementable_items),
        _ => Err(()),
    }
}
/// Contains variant => str representations for constructing
/// DepNode groups for tests.
#[expect(non_upper_case_globals)]
pub mod label_strs {
    pub const Null: &str = "Null";
    pub const Red: &str = "Red";
    pub const SideEffect: &str = "SideEffect";
    pub const AnonZeroDeps: &str = "AnonZeroDeps";
    pub const TraitSelect: &str = "TraitSelect";
    pub const CompileCodegenUnit: &str = "CompileCodegenUnit";
    pub const CompileMonoItem: &str = "CompileMonoItem";
    pub const Metadata: &str = "Metadata";
    pub const derive_macro_expansion: &str = "derive_macro_expansion";
    pub const trigger_delayed_bug: &str = "trigger_delayed_bug";
    pub const registered_tools: &str = "registered_tools";
    pub const early_lint_checks: &str = "early_lint_checks";
    pub const env_var_os: &str = "env_var_os";
    pub const resolutions: &str = "resolutions";
    pub const resolver_for_lowering_raw: &str = "resolver_for_lowering_raw";
    pub const source_span: &str = "source_span";
    pub const hir_crate: &str = "hir_crate";
    pub const hir_crate_items: &str = "hir_crate_items";
    pub const hir_module_items: &str = "hir_module_items";
    pub const local_def_id_to_hir_id: &str = "local_def_id_to_hir_id";
    pub const hir_owner_parent_q: &str = "hir_owner_parent_q";
    pub const opt_hir_owner_nodes: &str = "opt_hir_owner_nodes";
    pub const hir_attr_map: &str = "hir_attr_map";
    pub const opt_ast_lowering_delayed_lints: &str =
        "opt_ast_lowering_delayed_lints";
    pub const const_param_default: &str = "const_param_default";
    pub const const_of_item: &str = "const_of_item";
    pub const type_of: &str = "type_of";
    pub const type_of_opaque: &str = "type_of_opaque";
    pub const type_of_opaque_hir_typeck: &str = "type_of_opaque_hir_typeck";
    pub const type_alias_is_lazy: &str = "type_alias_is_lazy";
    pub const collect_return_position_impl_trait_in_trait_tys: &str =
        "collect_return_position_impl_trait_in_trait_tys";
    pub const opaque_ty_origin: &str = "opaque_ty_origin";
    pub const unsizing_params_for_adt: &str = "unsizing_params_for_adt";
    pub const analysis: &str = "analysis";
    pub const check_expectations: &str = "check_expectations";
    pub const generics_of: &str = "generics_of";
    pub const predicates_of: &str = "predicates_of";
    pub const opaque_types_defined_by: &str = "opaque_types_defined_by";
    pub const nested_bodies_within: &str = "nested_bodies_within";
    pub const explicit_item_bounds: &str = "explicit_item_bounds";
    pub const explicit_item_self_bounds: &str = "explicit_item_self_bounds";
    pub const item_bounds: &str = "item_bounds";
    pub const item_self_bounds: &str = "item_self_bounds";
    pub const item_non_self_bounds: &str = "item_non_self_bounds";
    pub const impl_super_outlives: &str = "impl_super_outlives";
    pub const native_libraries: &str = "native_libraries";
    pub const shallow_lint_levels_on: &str = "shallow_lint_levels_on";
    pub const lint_expectations: &str = "lint_expectations";
    pub const lints_that_dont_need_to_run: &str =
        "lints_that_dont_need_to_run";
    pub const expn_that_defined: &str = "expn_that_defined";
    pub const is_panic_runtime: &str = "is_panic_runtime";
    pub const representability: &str = "representability";
    pub const representability_adt_ty: &str = "representability_adt_ty";
    pub const params_in_repr: &str = "params_in_repr";
    pub const thir_body: &str = "thir_body";
    pub const mir_keys: &str = "mir_keys";
    pub const mir_const_qualif: &str = "mir_const_qualif";
    pub const mir_built: &str = "mir_built";
    pub const thir_abstract_const: &str = "thir_abstract_const";
    pub const mir_drops_elaborated_and_const_checked: &str =
        "mir_drops_elaborated_and_const_checked";
    pub const mir_for_ctfe: &str = "mir_for_ctfe";
    pub const mir_promoted: &str = "mir_promoted";
    pub const closure_typeinfo: &str = "closure_typeinfo";
    pub const closure_saved_names_of_captured_variables: &str =
        "closure_saved_names_of_captured_variables";
    pub const mir_coroutine_witnesses: &str = "mir_coroutine_witnesses";
    pub const check_coroutine_obligations: &str =
        "check_coroutine_obligations";
    pub const check_potentially_region_dependent_goals: &str =
        "check_potentially_region_dependent_goals";
    pub const optimized_mir: &str = "optimized_mir";
    pub const coverage_attr_on: &str = "coverage_attr_on";
    pub const coverage_ids_info: &str = "coverage_ids_info";
    pub const promoted_mir: &str = "promoted_mir";
    pub const erase_and_anonymize_regions_ty: &str =
        "erase_and_anonymize_regions_ty";
    pub const wasm_import_module_map: &str = "wasm_import_module_map";
    pub const trait_explicit_predicates_and_bounds: &str =
        "trait_explicit_predicates_and_bounds";
    pub const explicit_predicates_of: &str = "explicit_predicates_of";
    pub const inferred_outlives_of: &str = "inferred_outlives_of";
    pub const explicit_super_predicates_of: &str =
        "explicit_super_predicates_of";
    pub const explicit_implied_predicates_of: &str =
        "explicit_implied_predicates_of";
    pub const explicit_supertraits_containing_assoc_item: &str =
        "explicit_supertraits_containing_assoc_item";
    pub const const_conditions: &str = "const_conditions";
    pub const explicit_implied_const_bounds: &str =
        "explicit_implied_const_bounds";
    pub const type_param_predicates: &str = "type_param_predicates";
    pub const trait_def: &str = "trait_def";
    pub const adt_def: &str = "adt_def";
    pub const adt_destructor: &str = "adt_destructor";
    pub const adt_async_destructor: &str = "adt_async_destructor";
    pub const adt_sizedness_constraint: &str = "adt_sizedness_constraint";
    pub const adt_dtorck_constraint: &str = "adt_dtorck_constraint";
    pub const constness: &str = "constness";
    pub const asyncness: &str = "asyncness";
    pub const is_promotable_const_fn: &str = "is_promotable_const_fn";
    pub const coroutine_by_move_body_def_id: &str =
        "coroutine_by_move_body_def_id";
    pub const coroutine_kind: &str = "coroutine_kind";
    pub const coroutine_for_closure: &str = "coroutine_for_closure";
    pub const coroutine_hidden_types: &str = "coroutine_hidden_types";
    pub const crate_variances: &str = "crate_variances";
    pub const variances_of: &str = "variances_of";
    pub const inferred_outlives_crate: &str = "inferred_outlives_crate";
    pub const associated_item_def_ids: &str = "associated_item_def_ids";
    pub const associated_item: &str = "associated_item";
    pub const associated_items: &str = "associated_items";
    pub const impl_item_implementor_ids: &str = "impl_item_implementor_ids";
    pub const associated_types_for_impl_traits_in_trait_or_impl: &str =
        "associated_types_for_impl_traits_in_trait_or_impl";
    pub const impl_trait_header: &str = "impl_trait_header";
    pub const impl_self_is_guaranteed_unsized: &str =
        "impl_self_is_guaranteed_unsized";
    pub const inherent_impls: &str = "inherent_impls";
    pub const incoherent_impls: &str = "incoherent_impls";
    pub const check_transmutes: &str = "check_transmutes";
    pub const check_unsafety: &str = "check_unsafety";
    pub const check_tail_calls: &str = "check_tail_calls";
    pub const assumed_wf_types: &str = "assumed_wf_types";
    pub const assumed_wf_types_for_rpitit: &str =
        "assumed_wf_types_for_rpitit";
    pub const fn_sig: &str = "fn_sig";
    pub const lint_mod: &str = "lint_mod";
    pub const check_unused_traits: &str = "check_unused_traits";
    pub const check_mod_attrs: &str = "check_mod_attrs";
    pub const check_mod_unstable_api_usage: &str =
        "check_mod_unstable_api_usage";
    pub const check_mod_privacy: &str = "check_mod_privacy";
    pub const check_liveness: &str = "check_liveness";
    pub const live_symbols_and_ignored_derived_traits: &str =
        "live_symbols_and_ignored_derived_traits";
    pub const check_mod_deathness: &str = "check_mod_deathness";
    pub const check_type_wf: &str = "check_type_wf";
    pub const coerce_unsized_info: &str = "coerce_unsized_info";
    pub const typeck: &str = "typeck";
    pub const used_trait_imports: &str = "used_trait_imports";
    pub const coherent_trait: &str = "coherent_trait";
    pub const mir_borrowck: &str = "mir_borrowck";
    pub const crate_inherent_impls: &str = "crate_inherent_impls";
    pub const crate_inherent_impls_validity_check: &str =
        "crate_inherent_impls_validity_check";
    pub const crate_inherent_impls_overlap_check: &str =
        "crate_inherent_impls_overlap_check";
    pub const orphan_check_impl: &str = "orphan_check_impl";
    pub const mir_callgraph_cyclic: &str = "mir_callgraph_cyclic";
    pub const mir_inliner_callees: &str = "mir_inliner_callees";
    pub const tag_for_variant: &str = "tag_for_variant";
    pub const eval_to_allocation_raw: &str = "eval_to_allocation_raw";
    pub const eval_static_initializer: &str = "eval_static_initializer";
    pub const eval_to_const_value_raw: &str = "eval_to_const_value_raw";
    pub const eval_to_valtree: &str = "eval_to_valtree";
    pub const valtree_to_const_val: &str = "valtree_to_const_val";
    pub const lit_to_const: &str = "lit_to_const";
    pub const check_match: &str = "check_match";
    pub const effective_visibilities: &str = "effective_visibilities";
    pub const check_private_in_public: &str = "check_private_in_public";
    pub const reachable_set: &str = "reachable_set";
    pub const region_scope_tree: &str = "region_scope_tree";
    pub const mir_shims: &str = "mir_shims";
    pub const symbol_name: &str = "symbol_name";
    pub const def_kind: &str = "def_kind";
    pub const def_span: &str = "def_span";
    pub const def_ident_span: &str = "def_ident_span";
    pub const ty_span: &str = "ty_span";
    pub const lookup_stability: &str = "lookup_stability";
    pub const lookup_const_stability: &str = "lookup_const_stability";
    pub const lookup_default_body_stability: &str =
        "lookup_default_body_stability";
    pub const should_inherit_track_caller: &str =
        "should_inherit_track_caller";
    pub const inherited_align: &str = "inherited_align";
    pub const lookup_deprecation_entry: &str = "lookup_deprecation_entry";
    pub const is_doc_hidden: &str = "is_doc_hidden";
    pub const is_doc_notable_trait: &str = "is_doc_notable_trait";
    pub const attrs_for_def: &str = "attrs_for_def";
    pub const codegen_fn_attrs: &str = "codegen_fn_attrs";
    pub const asm_target_features: &str = "asm_target_features";
    pub const fn_arg_idents: &str = "fn_arg_idents";
    pub const rendered_const: &str = "rendered_const";
    pub const rendered_precise_capturing_args: &str =
        "rendered_precise_capturing_args";
    pub const impl_parent: &str = "impl_parent";
    pub const is_ctfe_mir_available: &str = "is_ctfe_mir_available";
    pub const is_mir_available: &str = "is_mir_available";
    pub const own_existential_vtable_entries: &str =
        "own_existential_vtable_entries";
    pub const vtable_entries: &str = "vtable_entries";
    pub const first_method_vtable_slot: &str = "first_method_vtable_slot";
    pub const supertrait_vtable_slot: &str = "supertrait_vtable_slot";
    pub const vtable_allocation: &str = "vtable_allocation";
    pub const codegen_select_candidate: &str = "codegen_select_candidate";
    pub const all_local_trait_impls: &str = "all_local_trait_impls";
    pub const local_trait_impls: &str = "local_trait_impls";
    pub const trait_impls_of: &str = "trait_impls_of";
    pub const specialization_graph_of: &str = "specialization_graph_of";
    pub const dyn_compatibility_violations: &str =
        "dyn_compatibility_violations";
    pub const is_dyn_compatible: &str = "is_dyn_compatible";
    pub const param_env: &str = "param_env";
    pub const typing_env_normalized_for_post_analysis: &str =
        "typing_env_normalized_for_post_analysis";
    pub const is_copy_raw: &str = "is_copy_raw";
    pub const is_use_cloned_raw: &str = "is_use_cloned_raw";
    pub const is_sized_raw: &str = "is_sized_raw";
    pub const is_freeze_raw: &str = "is_freeze_raw";
    pub const is_unpin_raw: &str = "is_unpin_raw";
    pub const is_async_drop_raw: &str = "is_async_drop_raw";
    pub const needs_drop_raw: &str = "needs_drop_raw";
    pub const needs_async_drop_raw: &str = "needs_async_drop_raw";
    pub const has_significant_drop_raw: &str = "has_significant_drop_raw";
    pub const has_structural_eq_impl: &str = "has_structural_eq_impl";
    pub const adt_drop_tys: &str = "adt_drop_tys";
    pub const adt_async_drop_tys: &str = "adt_async_drop_tys";
    pub const adt_significant_drop_tys: &str = "adt_significant_drop_tys";
    pub const list_significant_drop_tys: &str = "list_significant_drop_tys";
    pub const layout_of: &str = "layout_of";
    pub const fn_abi_of_fn_ptr: &str = "fn_abi_of_fn_ptr";
    pub const fn_abi_of_instance: &str = "fn_abi_of_instance";
    pub const dylib_dependency_formats: &str = "dylib_dependency_formats";
    pub const dependency_formats: &str = "dependency_formats";
    pub const is_compiler_builtins: &str = "is_compiler_builtins";
    pub const has_global_allocator: &str = "has_global_allocator";
    pub const has_alloc_error_handler: &str = "has_alloc_error_handler";
    pub const has_panic_handler: &str = "has_panic_handler";
    pub const is_profiler_runtime: &str = "is_profiler_runtime";
    pub const has_ffi_unwind_calls: &str = "has_ffi_unwind_calls";
    pub const required_panic_strategy: &str = "required_panic_strategy";
    pub const panic_in_drop_strategy: &str = "panic_in_drop_strategy";
    pub const is_no_builtins: &str = "is_no_builtins";
    pub const symbol_mangling_version: &str = "symbol_mangling_version";
    pub const extern_crate: &str = "extern_crate";
    pub const specialization_enabled_in: &str = "specialization_enabled_in";
    pub const specializes: &str = "specializes";
    pub const in_scope_traits_map: &str = "in_scope_traits_map";
    pub const defaultness: &str = "defaultness";
    pub const default_field: &str = "default_field";
    pub const check_well_formed: &str = "check_well_formed";
    pub const enforce_impl_non_lifetime_params_are_constrained: &str =
        "enforce_impl_non_lifetime_params_are_constrained";
    pub const reachable_non_generics: &str = "reachable_non_generics";
    pub const is_reachable_non_generic: &str = "is_reachable_non_generic";
    pub const is_unreachable_local_definition: &str =
        "is_unreachable_local_definition";
    pub const upstream_monomorphizations: &str = "upstream_monomorphizations";
    pub const upstream_monomorphizations_for: &str =
        "upstream_monomorphizations_for";
    pub const upstream_drop_glue_for: &str = "upstream_drop_glue_for";
    pub const upstream_async_drop_glue_for: &str =
        "upstream_async_drop_glue_for";
    pub const foreign_modules: &str = "foreign_modules";
    pub const clashing_extern_declarations: &str =
        "clashing_extern_declarations";
    pub const entry_fn: &str = "entry_fn";
    pub const proc_macro_decls_static: &str = "proc_macro_decls_static";
    pub const crate_hash: &str = "crate_hash";
    pub const crate_host_hash: &str = "crate_host_hash";
    pub const extra_filename: &str = "extra_filename";
    pub const crate_extern_paths: &str = "crate_extern_paths";
    pub const implementations_of_trait: &str = "implementations_of_trait";
    pub const crate_incoherent_impls: &str = "crate_incoherent_impls";
    pub const native_library: &str = "native_library";
    pub const inherit_sig_for_delegation_item: &str =
        "inherit_sig_for_delegation_item";
    pub const resolve_bound_vars: &str = "resolve_bound_vars";
    pub const named_variable_map: &str = "named_variable_map";
    pub const is_late_bound_map: &str = "is_late_bound_map";
    pub const object_lifetime_default: &str = "object_lifetime_default";
    pub const late_bound_vars_map: &str = "late_bound_vars_map";
    pub const opaque_captured_lifetimes: &str = "opaque_captured_lifetimes";
    pub const visibility: &str = "visibility";
    pub const inhabited_predicate_adt: &str = "inhabited_predicate_adt";
    pub const inhabited_predicate_type: &str = "inhabited_predicate_type";
    pub const dep_kind: &str = "dep_kind";
    pub const crate_name: &str = "crate_name";
    pub const module_children: &str = "module_children";
    pub const num_extern_def_ids: &str = "num_extern_def_ids";
    pub const lib_features: &str = "lib_features";
    pub const stability_implications: &str = "stability_implications";
    pub const intrinsic_raw: &str = "intrinsic_raw";
    pub const get_lang_items: &str = "get_lang_items";
    pub const all_diagnostic_items: &str = "all_diagnostic_items";
    pub const defined_lang_items: &str = "defined_lang_items";
    pub const diagnostic_items: &str = "diagnostic_items";
    pub const missing_lang_items: &str = "missing_lang_items";
    pub const visible_parent_map: &str = "visible_parent_map";
    pub const trimmed_def_paths: &str = "trimmed_def_paths";
    pub const missing_extern_crate_item: &str = "missing_extern_crate_item";
    pub const used_crate_source: &str = "used_crate_source";
    pub const debugger_visualizers: &str = "debugger_visualizers";
    pub const postorder_cnums: &str = "postorder_cnums";
    pub const is_private_dep: &str = "is_private_dep";
    pub const allocator_kind: &str = "allocator_kind";
    pub const alloc_error_handler_kind: &str = "alloc_error_handler_kind";
    pub const upvars_mentioned: &str = "upvars_mentioned";
    pub const crates: &str = "crates";
    pub const used_crates: &str = "used_crates";
    pub const duplicate_crate_names: &str = "duplicate_crate_names";
    pub const traits: &str = "traits";
    pub const trait_impls_in_crate: &str = "trait_impls_in_crate";
    pub const stable_order_of_exportable_impls: &str =
        "stable_order_of_exportable_impls";
    pub const exportable_items: &str = "exportable_items";
    pub const exported_non_generic_symbols: &str =
        "exported_non_generic_symbols";
    pub const exported_generic_symbols: &str = "exported_generic_symbols";
    pub const collect_and_partition_mono_items: &str =
        "collect_and_partition_mono_items";
    pub const is_codegened_item: &str = "is_codegened_item";
    pub const codegen_unit: &str = "codegen_unit";
    pub const backend_optimization_level: &str = "backend_optimization_level";
    pub const output_filenames: &str = "output_filenames";
    pub const normalize_canonicalized_projection: &str =
        "normalize_canonicalized_projection";
    pub const normalize_canonicalized_free_alias: &str =
        "normalize_canonicalized_free_alias";
    pub const normalize_canonicalized_inherent_projection: &str =
        "normalize_canonicalized_inherent_projection";
    pub const try_normalize_generic_arg_after_erasing_regions: &str =
        "try_normalize_generic_arg_after_erasing_regions";
    pub const implied_outlives_bounds: &str = "implied_outlives_bounds";
    pub const dropck_outlives: &str = "dropck_outlives";
    pub const evaluate_obligation: &str = "evaluate_obligation";
    pub const type_op_ascribe_user_type: &str = "type_op_ascribe_user_type";
    pub const type_op_prove_predicate: &str = "type_op_prove_predicate";
    pub const type_op_normalize_ty: &str = "type_op_normalize_ty";
    pub const type_op_normalize_clause: &str = "type_op_normalize_clause";
    pub const type_op_normalize_poly_fn_sig: &str =
        "type_op_normalize_poly_fn_sig";
    pub const type_op_normalize_fn_sig: &str = "type_op_normalize_fn_sig";
    pub const instantiate_and_check_impossible_predicates: &str =
        "instantiate_and_check_impossible_predicates";
    pub const is_impossible_associated_item: &str =
        "is_impossible_associated_item";
    pub const method_autoderef_steps: &str = "method_autoderef_steps";
    pub const evaluate_root_goal_for_proof_tree_raw: &str =
        "evaluate_root_goal_for_proof_tree_raw";
    pub const rust_target_features: &str = "rust_target_features";
    pub const implied_target_features: &str = "implied_target_features";
    pub const features_query: &str = "features_query";
    pub const crate_for_resolver: &str = "crate_for_resolver";
    pub const resolve_instance_raw: &str = "resolve_instance_raw";
    pub const reveal_opaque_types_in_bounds: &str =
        "reveal_opaque_types_in_bounds";
    pub const limits: &str = "limits";
    pub const diagnostic_hir_wf_check: &str = "diagnostic_hir_wf_check";
    pub const global_backend_features: &str = "global_backend_features";
    pub const check_validity_requirement: &str = "check_validity_requirement";
    pub const compare_impl_item: &str = "compare_impl_item";
    pub const deduced_param_attrs: &str = "deduced_param_attrs";
    pub const doc_link_resolutions: &str = "doc_link_resolutions";
    pub const doc_link_traits_in_scope: &str = "doc_link_traits_in_scope";
    pub const stripped_cfg_items: &str = "stripped_cfg_items";
    pub const generics_require_sized_self: &str =
        "generics_require_sized_self";
    pub const cross_crate_inlinable: &str = "cross_crate_inlinable";
    pub const check_mono_item: &str = "check_mono_item";
    pub const skip_move_check_fns: &str = "skip_move_check_fns";
    pub const items_of_instance: &str = "items_of_instance";
    pub const size_estimate: &str = "size_estimate";
    pub const anon_const_kind: &str = "anon_const_kind";
    pub const trivial_const: &str = "trivial_const";
    pub const sanitizer_settings_for: &str = "sanitizer_settings_for";
    pub const check_externally_implementable_items: &str =
        "check_externally_implementable_items";
    pub const externally_implementable_items: &str =
        "externally_implementable_items";
}rustc_with_all_queries!(define_dep_nodes![
87    /// We use this for most things when incr. comp. is turned off.
88    [] fn Null() -> (),
89    /// We use this to create a forever-red node.
90    [] fn Red() -> (),
91    [] fn SideEffect() -> (),
92    [] fn AnonZeroDeps() -> (),
93    [] fn TraitSelect() -> (),
94    [] fn CompileCodegenUnit() -> (),
95    [] fn CompileMonoItem() -> (),
96    [] fn Metadata() -> (),
97]);
98
99// WARNING: `construct` is generic and does not know that `CompileCodegenUnit` takes `Symbol`s as keys.
100// Be very careful changing this type signature!
101pub(crate) fn make_compile_codegen_unit(tcx: TyCtxt<'_>, name: Symbol) -> DepNode {
102    DepNode::construct(tcx, dep_kinds::CompileCodegenUnit, &name)
103}
104
105// WARNING: `construct` is generic and does not know that `CompileMonoItem` takes `MonoItem`s as keys.
106// Be very careful changing this type signature!
107pub(crate) fn make_compile_mono_item<'tcx>(
108    tcx: TyCtxt<'tcx>,
109    mono_item: &MonoItem<'tcx>,
110) -> DepNode {
111    DepNode::construct(tcx, dep_kinds::CompileMonoItem, mono_item)
112}
113
114// WARNING: `construct` is generic and does not know that `Metadata` takes `()`s as keys.
115// Be very careful changing this type signature!
116pub(crate) fn make_metadata(tcx: TyCtxt<'_>) -> DepNode {
117    DepNode::construct(tcx, dep_kinds::Metadata, &())
118}
119
120pub trait DepNodeExt: Sized {
121    fn extract_def_id(&self, tcx: TyCtxt<'_>) -> Option<DefId>;
122
123    fn from_label_string(
124        tcx: TyCtxt<'_>,
125        label: &str,
126        def_path_hash: DefPathHash,
127    ) -> Result<Self, ()>;
128
129    fn has_label_string(label: &str) -> bool;
130}
131
132impl DepNodeExt for DepNode {
133    /// Extracts the DefId corresponding to this DepNode. This will work
134    /// if two conditions are met:
135    ///
136    /// 1. The Fingerprint of the DepNode actually is a DefPathHash, and
137    /// 2. the item that the DefPath refers to exists in the current tcx.
138    ///
139    /// Condition (1) is determined by the DepKind variant of the
140    /// DepNode. Condition (2) might not be fulfilled if a DepNode
141    /// refers to something from the previous compilation session that
142    /// has been removed.
143    fn extract_def_id(&self, tcx: TyCtxt<'_>) -> Option<DefId> {
144        if tcx.fingerprint_style(self.kind) == FingerprintStyle::DefPathHash {
145            tcx.def_path_hash_to_def_id(DefPathHash(self.hash.into()))
146        } else {
147            None
148        }
149    }
150
151    /// Used in testing
152    fn from_label_string(
153        tcx: TyCtxt<'_>,
154        label: &str,
155        def_path_hash: DefPathHash,
156    ) -> Result<DepNode, ()> {
157        let kind = dep_kind_from_label_string(label)?;
158
159        match tcx.fingerprint_style(kind) {
160            FingerprintStyle::Opaque | FingerprintStyle::HirId => Err(()),
161            FingerprintStyle::Unit => Ok(DepNode::new_no_params(tcx, kind)),
162            FingerprintStyle::DefPathHash => {
163                Ok(DepNode::from_def_path_hash(tcx, def_path_hash, kind))
164            }
165        }
166    }
167
168    /// Used in testing
169    fn has_label_string(label: &str) -> bool {
170        dep_kind_from_label_string(label).is_ok()
171    }
172}
173
174/// Maps a query label to its DepKind. Panics if a query with the given label does not exist.
175pub fn dep_kind_from_label(label: &str) -> DepKind {
176    dep_kind_from_label_string(label)
177        .unwrap_or_else(|_| {
    ::core::panicking::panic_fmt(format_args!("Query label {0} does not exist",
            label));
}panic!("Query label {label} does not exist"))
178}
179
180impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for () {
181    #[inline(always)]
182    fn fingerprint_style() -> FingerprintStyle {
183        FingerprintStyle::Unit
184    }
185
186    #[inline(always)]
187    fn to_fingerprint(&self, _: TyCtxt<'tcx>) -> Fingerprint {
188        Fingerprint::ZERO
189    }
190
191    #[inline(always)]
192    fn recover(_: TyCtxt<'tcx>, _: &DepNode) -> Option<Self> {
193        Some(())
194    }
195}
196
197impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for DefId {
198    #[inline(always)]
199    fn fingerprint_style() -> FingerprintStyle {
200        FingerprintStyle::DefPathHash
201    }
202
203    #[inline(always)]
204    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
205        tcx.def_path_hash(*self).0
206    }
207
208    #[inline(always)]
209    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
210        tcx.def_path_str(*self)
211    }
212
213    #[inline(always)]
214    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
215        dep_node.extract_def_id(tcx)
216    }
217}
218
219impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for LocalDefId {
220    #[inline(always)]
221    fn fingerprint_style() -> FingerprintStyle {
222        FingerprintStyle::DefPathHash
223    }
224
225    #[inline(always)]
226    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
227        self.to_def_id().to_fingerprint(tcx)
228    }
229
230    #[inline(always)]
231    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
232        self.to_def_id().to_debug_str(tcx)
233    }
234
235    #[inline(always)]
236    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
237        dep_node.extract_def_id(tcx).map(|id| id.expect_local())
238    }
239}
240
241impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for OwnerId {
242    #[inline(always)]
243    fn fingerprint_style() -> FingerprintStyle {
244        FingerprintStyle::DefPathHash
245    }
246
247    #[inline(always)]
248    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
249        self.to_def_id().to_fingerprint(tcx)
250    }
251
252    #[inline(always)]
253    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
254        self.to_def_id().to_debug_str(tcx)
255    }
256
257    #[inline(always)]
258    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
259        dep_node.extract_def_id(tcx).map(|id| OwnerId { def_id: id.expect_local() })
260    }
261}
262
263impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for CrateNum {
264    #[inline(always)]
265    fn fingerprint_style() -> FingerprintStyle {
266        FingerprintStyle::DefPathHash
267    }
268
269    #[inline(always)]
270    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
271        let def_id = self.as_def_id();
272        def_id.to_fingerprint(tcx)
273    }
274
275    #[inline(always)]
276    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
277        tcx.crate_name(*self).to_string()
278    }
279
280    #[inline(always)]
281    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
282        dep_node.extract_def_id(tcx).map(|id| id.krate)
283    }
284}
285
286impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for (DefId, DefId) {
287    #[inline(always)]
288    fn fingerprint_style() -> FingerprintStyle {
289        FingerprintStyle::Opaque
290    }
291
292    // We actually would not need to specialize the implementation of this
293    // method but it's faster to combine the hashes than to instantiate a full
294    // hashing context and stable-hashing state.
295    #[inline(always)]
296    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
297        let (def_id_0, def_id_1) = *self;
298
299        let def_path_hash_0 = tcx.def_path_hash(def_id_0);
300        let def_path_hash_1 = tcx.def_path_hash(def_id_1);
301
302        def_path_hash_0.0.combine(def_path_hash_1.0)
303    }
304
305    #[inline(always)]
306    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
307        let (def_id_0, def_id_1) = *self;
308
309        ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("({0}, {1})",
                tcx.def_path_debug_str(def_id_0),
                tcx.def_path_debug_str(def_id_1)))
    })format!("({}, {})", tcx.def_path_debug_str(def_id_0), tcx.def_path_debug_str(def_id_1))
310    }
311}
312
313impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for HirId {
314    #[inline(always)]
315    fn fingerprint_style() -> FingerprintStyle {
316        FingerprintStyle::HirId
317    }
318
319    // We actually would not need to specialize the implementation of this
320    // method but it's faster to combine the hashes than to instantiate a full
321    // hashing context and stable-hashing state.
322    #[inline(always)]
323    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
324        let HirId { owner, local_id } = *self;
325        let def_path_hash = tcx.def_path_hash(owner.to_def_id());
326        Fingerprint::new(
327            // `owner` is local, so is completely defined by the local hash
328            def_path_hash.local_hash(),
329            local_id.as_u32() as u64,
330        )
331    }
332
333    #[inline(always)]
334    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
335        let HirId { owner, local_id } = *self;
336        ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("{0}.{1}", tcx.def_path_str(owner),
                local_id.as_u32()))
    })format!("{}.{}", tcx.def_path_str(owner), local_id.as_u32())
337    }
338
339    #[inline(always)]
340    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
341        if tcx.fingerprint_style(dep_node.kind) == FingerprintStyle::HirId {
342            let (local_hash, local_id) = Fingerprint::from(dep_node.hash).split();
343            let def_path_hash = DefPathHash::new(tcx.stable_crate_id(LOCAL_CRATE), local_hash);
344            let def_id = tcx.def_path_hash_to_def_id(def_path_hash)?.expect_local();
345            let local_id = local_id
346                .as_u64()
347                .try_into()
348                .unwrap_or_else(|_| {
    ::core::panicking::panic_fmt(format_args!("local id should be u32, found {0:?}",
            local_id));
}panic!("local id should be u32, found {local_id:?}"));
349            Some(HirId { owner: OwnerId { def_id }, local_id: ItemLocalId::from_u32(local_id) })
350        } else {
351            None
352        }
353    }
354}
355
356impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for ModDefId {
357    #[inline(always)]
358    fn fingerprint_style() -> FingerprintStyle {
359        FingerprintStyle::DefPathHash
360    }
361
362    #[inline(always)]
363    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
364        self.to_def_id().to_fingerprint(tcx)
365    }
366
367    #[inline(always)]
368    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
369        self.to_def_id().to_debug_str(tcx)
370    }
371
372    #[inline(always)]
373    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
374        DefId::recover(tcx, dep_node).map(ModDefId::new_unchecked)
375    }
376}
377
378impl<'tcx> DepNodeParams<TyCtxt<'tcx>> for LocalModDefId {
379    #[inline(always)]
380    fn fingerprint_style() -> FingerprintStyle {
381        FingerprintStyle::DefPathHash
382    }
383
384    #[inline(always)]
385    fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint {
386        self.to_def_id().to_fingerprint(tcx)
387    }
388
389    #[inline(always)]
390    fn to_debug_str(&self, tcx: TyCtxt<'tcx>) -> String {
391        self.to_def_id().to_debug_str(tcx)
392    }
393
394    #[inline(always)]
395    fn recover(tcx: TyCtxt<'tcx>, dep_node: &DepNode) -> Option<Self> {
396        LocalDefId::recover(tcx, dep_node).map(LocalModDefId::new_unchecked)
397    }
398}