1use std::fmt;
51use std::hash::Hash;
52
53use rustc_data_structures::fingerprint::{Fingerprint, PackedFingerprint};
54use rustc_data_structures::stable_hash::{StableHasher, StableOrd};
55use rustc_hir::def_id::DefId;
56use rustc_hir::definitions::DefPathHash;
57use rustc_macros::{Decodable, Encodable, StableHash};
58use rustc_span::Symbol;
59
60use super::{DepNodeIndex, KeyFingerprintStyle, SerializedDepNodeIndex};
61use crate::dep_graph::DepNodeKey;
62use crate::mono::MonoItem;
63use crate::ty::{TyCtxt, tls};
64
65impl DepKind {
67 #[inline]
68 pub(crate) fn from_u16(u: u16) -> Self {
69 if u > Self::MAX {
70 { ::core::panicking::panic_fmt(format_args!("Invalid DepKind {0}", u)); };panic!("Invalid DepKind {u}");
71 }
72 unsafe { std::mem::transmute(u) }
75 }
76
77 #[inline]
78 pub(crate) const fn as_u16(&self) -> u16 {
79 *self as u16
80 }
81
82 #[inline]
83 pub const fn as_usize(&self) -> usize {
84 *self as usize
85 }
86
87 pub(crate) const NUM_VARIANTS: usize = std::mem::variant_count::<DepKind>();
89
90 pub(crate) const MAX: u16 = {
93 let max = Self::NUM_VARIANTS - 1;
94 if !(max < u16::MAX as usize) {
::core::panicking::panic("assertion failed: max < u16::MAX as usize")
};assert!(max < u16::MAX as usize);
95 max as u16
96 };
97}
98
99#[derive(#[automatically_derived]
impl ::core::clone::Clone for DepNode {
#[inline]
fn clone(&self) -> DepNode {
let _: ::core::clone::AssertParamIsClone<DepKind>;
let _: ::core::clone::AssertParamIsClone<PackedFingerprint>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for DepNode { }Copy, #[automatically_derived]
impl ::core::cmp::PartialEq for DepNode {
#[inline]
fn eq(&self, other: &DepNode) -> bool {
self.kind == other.kind &&
self.key_fingerprint == other.key_fingerprint
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for DepNode {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<DepKind>;
let _: ::core::cmp::AssertParamIsEq<PackedFingerprint>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for DepNode {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.kind, state);
::core::hash::Hash::hash(&self.key_fingerprint, state)
}
}Hash)]
102pub struct DepNode {
103 pub kind: DepKind,
104
105 pub key_fingerprint: PackedFingerprint,
117}
118
119impl DepNode {
120 pub fn new_no_params<'tcx>(tcx: TyCtxt<'tcx>, kind: DepKind) -> DepNode {
124 if true {
{
match (&tcx.key_fingerprint_style(kind), &KeyFingerprintStyle::Unit) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = ::core::panicking::AssertKind::Eq;
::core::panicking::assert_failed(kind, &*left_val,
&*right_val, ::core::option::Option::None);
}
}
}
};
};debug_assert_eq!(tcx.key_fingerprint_style(kind), KeyFingerprintStyle::Unit);
125 DepNode { kind, key_fingerprint: Fingerprint::ZERO.into() }
126 }
127
128 pub fn construct<'tcx, Key>(tcx: TyCtxt<'tcx>, kind: DepKind, key: &Key) -> DepNode
129 where
130 Key: DepNodeKey<'tcx>,
131 {
132 DepNode { kind, key_fingerprint: key.to_fingerprint(tcx).into() }
133 }
134
135 pub fn from_def_path_hash<'tcx>(
139 tcx: TyCtxt<'tcx>,
140 def_path_hash: DefPathHash,
141 kind: DepKind,
142 ) -> Self {
143 if true {
if !(tcx.key_fingerprint_style(kind) == KeyFingerprintStyle::DefPathHash)
{
::core::panicking::panic("assertion failed: tcx.key_fingerprint_style(kind) == KeyFingerprintStyle::DefPathHash")
};
};debug_assert!(tcx.key_fingerprint_style(kind) == KeyFingerprintStyle::DefPathHash);
144 DepNode { kind, key_fingerprint: def_path_hash.0.into() }
145 }
146}
147
148impl fmt::Debug for DepNode {
149 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
150 tls::with_opt(|opt_tcx| {
151 if let Some(tcx) = opt_tcx
152 && let Some(def_id) = self.extract_def_id(tcx)
153 {
154 f.write_fmt(format_args!("{0:?}({1})", self.kind,
tcx.def_path_debug_str(def_id)))write!(f, "{:?}({})", self.kind, tcx.def_path_debug_str(def_id))?;
155 } else {
156 f.write_fmt(format_args!("{0:?}({1})", self.kind, self.key_fingerprint))write!(f, "{:?}({})", self.kind, self.key_fingerprint)?;
157 }
158 Ok(())
159 })
160 }
161}
162
163pub struct DepKindVTable<'tcx> {
169 pub is_eval_always: bool,
173
174 pub key_fingerprint_style: KeyFingerprintStyle,
179
180 pub force_from_dep_node_fn: Option<
216 fn(tcx: TyCtxt<'tcx>, dep_node: DepNode, prev_index: SerializedDepNodeIndex) -> bool,
217 >,
218
219 pub promote_from_disk_fn: Option<
223 fn(
224 tcx: TyCtxt<'tcx>,
225 dep_node: DepNode,
226 prev_index: SerializedDepNodeIndex,
227 dep_node_index: DepNodeIndex,
228 ),
229 >,
230}
231
232#[derive(#[automatically_derived]
impl ::core::clone::Clone for WorkProductId {
#[inline]
fn clone(&self) -> WorkProductId {
let _: ::core::clone::AssertParamIsClone<Fingerprint>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::Copy for WorkProductId { }Copy, #[automatically_derived]
impl ::core::fmt::Debug for WorkProductId {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field1_finish(f, "WorkProductId",
"hash", &&self.hash)
}
}Debug, #[automatically_derived]
impl ::core::cmp::PartialEq for WorkProductId {
#[inline]
fn eq(&self, other: &WorkProductId) -> bool { self.hash == other.hash }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for WorkProductId {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Fingerprint>;
}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for WorkProductId {
#[inline]
fn partial_cmp(&self, other: &WorkProductId)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ord::cmp(self, other))
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for WorkProductId {
#[inline]
fn cmp(&self, other: &WorkProductId) -> ::core::cmp::Ordering {
::core::cmp::Ord::cmp(&self.hash, &other.hash)
}
}Ord, #[automatically_derived]
impl ::core::hash::Hash for WorkProductId {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
::core::hash::Hash::hash(&self.hash, state)
}
}Hash)]
238#[derive(const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for WorkProductId {
fn encode(&self, __encoder: &mut __E) {
match *self {
WorkProductId { hash: ref __binding_0 } => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for WorkProductId {
fn decode(__decoder: &mut __D) -> Self {
WorkProductId {
hash: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable, const _: () =
{
impl ::rustc_data_structures::stable_hash::StableHash for
WorkProductId {
#[inline]
fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
__hcx: &mut __Hcx,
__hasher:
&mut ::rustc_data_structures::stable_hash::StableHasher) {
match *self {
WorkProductId { hash: ref __binding_0 } => {
{ __binding_0.stable_hash(__hcx, __hasher); }
}
}
}
}
};StableHash)]
239pub struct WorkProductId {
240 hash: Fingerprint,
241}
242
243impl WorkProductId {
244 pub fn from_cgu_name(cgu_name: &str) -> WorkProductId {
245 let mut hasher = StableHasher::new();
246 cgu_name.hash(&mut hasher);
247 WorkProductId { hash: hasher.finish() }
248 }
249}
250
251impl StableOrd for WorkProductId {
252 const CAN_USE_UNSTABLE_SORT: bool = true;
254
255 const THIS_IMPLEMENTATION_HAS_BEEN_TRIPLE_CHECKED: () = ();
257}
258
259macro_rules! define_dep_nodes {
261 (
262 queries {
263 $(
264 $(#[$q_attr:meta])*
265 fn $q_name:ident($K:ty) -> $V:ty
266 { $($modifiers:tt)* }
269 )*
270 }
271 non_queries {
272 $(
273 $(#[$nq_attr:meta])*
274 $nq_name:ident,
275 )*
276 }
277 ) => {
278 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
283 #[allow(non_camel_case_types)]
284 #[repr(u16)] pub enum DepKind {
286 $( $(#[$nq_attr])* $nq_name, )*
287 $( $(#[$q_attr])* $q_name, )*
288 }
289
290 fn dep_kind_from_label_string(label: &str) -> Result<DepKind, ()> {
293 match label {
294 $( stringify!($nq_name) => Ok(self::DepKind::$nq_name), )*
295 $( stringify!($q_name) => Ok(self::DepKind::$q_name), )*
296 _ => Err(()),
297 }
298 }
299 };
300}
301
302#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::clone::Clone for DepKind {
#[inline]
fn clone(&self) -> DepKind { *self }
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::marker::Copy for DepKind { }
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::fmt::Debug for DepKind {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
DepKind::Null => "Null",
DepKind::Red => "Red",
DepKind::SideEffect => "SideEffect",
DepKind::AnonZeroDeps => "AnonZeroDeps",
DepKind::TraitSelect => "TraitSelect",
DepKind::CompileCodegenUnit => "CompileCodegenUnit",
DepKind::CompileMonoItem => "CompileMonoItem",
DepKind::Metadata => "Metadata",
DepKind::derive_macro_expansion => "derive_macro_expansion",
DepKind::trigger_delayed_bug => "trigger_delayed_bug",
DepKind::registered_attr_tools => "registered_attr_tools",
DepKind::registered_lint_tools => "registered_lint_tools",
DepKind::early_lint_checks => "early_lint_checks",
DepKind::env_var_os => "env_var_os",
DepKind::resolutions => "resolutions",
DepKind::resolver_for_lowering_raw =>
"resolver_for_lowering_raw",
DepKind::index_ast => "index_ast",
DepKind::source_span => "source_span",
DepKind::lower_to_hir => "lower_to_hir",
DepKind::hir_owner => "hir_owner",
DepKind::hir_crate_items => "hir_crate_items",
DepKind::hir_module_items => "hir_module_items",
DepKind::hir_owner_parent_q => "hir_owner_parent_q",
DepKind::hir_attr_map => "hir_attr_map",
DepKind::const_param_default => "const_param_default",
DepKind::const_of_item => "const_of_item",
DepKind::type_of => "type_of",
DepKind::type_of_opaque => "type_of_opaque",
DepKind::type_of_opaque_hir_typeck =>
"type_of_opaque_hir_typeck",
DepKind::type_alias_is_checked => "type_alias_is_checked",
DepKind::collect_return_position_impl_trait_in_trait_tys =>
"collect_return_position_impl_trait_in_trait_tys",
DepKind::opaque_ty_origin => "opaque_ty_origin",
DepKind::unsizing_params_for_adt => "unsizing_params_for_adt",
DepKind::analysis => "analysis",
DepKind::check_expectations => "check_expectations",
DepKind::generics_of => "generics_of",
DepKind::clauses_of => "clauses_of",
DepKind::opaque_types_defined_by => "opaque_types_defined_by",
DepKind::nested_bodies_within => "nested_bodies_within",
DepKind::explicit_item_bounds => "explicit_item_bounds",
DepKind::explicit_item_self_bounds =>
"explicit_item_self_bounds",
DepKind::item_bounds => "item_bounds",
DepKind::item_self_bounds => "item_self_bounds",
DepKind::item_non_self_bounds => "item_non_self_bounds",
DepKind::impl_super_outlives => "impl_super_outlives",
DepKind::native_libraries => "native_libraries",
DepKind::shallow_lint_levels_on => "shallow_lint_levels_on",
DepKind::lint_expectations => "lint_expectations",
DepKind::skippable_lints => "skippable_lints",
DepKind::expn_that_defined => "expn_that_defined",
DepKind::is_panic_runtime => "is_panic_runtime",
DepKind::check_representability => "check_representability",
DepKind::check_representability_adt_ty =>
"check_representability_adt_ty",
DepKind::params_in_repr => "params_in_repr",
DepKind::thir_body => "thir_body",
DepKind::mir_keys => "mir_keys",
DepKind::mir_const_qualif => "mir_const_qualif",
DepKind::mir_built => "mir_built",
DepKind::thir_abstract_const => "thir_abstract_const",
DepKind::mir_drops_elaborated_and_const_checked =>
"mir_drops_elaborated_and_const_checked",
DepKind::mir_for_ctfe => "mir_for_ctfe",
DepKind::mir_promoted => "mir_promoted",
DepKind::closure_typeinfo => "closure_typeinfo",
DepKind::closure_saved_names_of_captured_variables =>
"closure_saved_names_of_captured_variables",
DepKind::mir_coroutine_witnesses => "mir_coroutine_witnesses",
DepKind::check_coroutine_obligations =>
"check_coroutine_obligations",
DepKind::check_potentially_region_dependent_goals =>
"check_potentially_region_dependent_goals",
DepKind::optimized_mir => "optimized_mir",
DepKind::coverage_attr_on => "coverage_attr_on",
DepKind::coverage_ids_info => "coverage_ids_info",
DepKind::promoted_mir => "promoted_mir",
DepKind::erase_and_anonymize_regions_ty =>
"erase_and_anonymize_regions_ty",
DepKind::wasm_import_module_map => "wasm_import_module_map",
DepKind::trait_explicit_clauses_and_bounds =>
"trait_explicit_clauses_and_bounds",
DepKind::explicit_clauses_of => "explicit_clauses_of",
DepKind::inferred_outlives_of => "inferred_outlives_of",
DepKind::explicit_super_clauses_of =>
"explicit_super_clauses_of",
DepKind::explicit_implied_clauses_of =>
"explicit_implied_clauses_of",
DepKind::explicit_supertraits_containing_assoc_item =>
"explicit_supertraits_containing_assoc_item",
DepKind::const_conditions => "const_conditions",
DepKind::explicit_implied_const_bounds =>
"explicit_implied_const_bounds",
DepKind::type_param_clauses => "type_param_clauses",
DepKind::trait_def => "trait_def",
DepKind::adt_def => "adt_def",
DepKind::adt_destructor => "adt_destructor",
DepKind::adt_async_destructor => "adt_async_destructor",
DepKind::adt_sizedness_constraint =>
"adt_sizedness_constraint",
DepKind::adt_dtorck_constraint => "adt_dtorck_constraint",
DepKind::constness => "constness",
DepKind::asyncness => "asyncness",
DepKind::is_promotable_const_fn => "is_promotable_const_fn",
DepKind::coroutine_by_move_body_def_id =>
"coroutine_by_move_body_def_id",
DepKind::coroutine_kind => "coroutine_kind",
DepKind::coroutine_for_closure => "coroutine_for_closure",
DepKind::coroutine_hidden_types => "coroutine_hidden_types",
DepKind::crate_variances => "crate_variances",
DepKind::variances_of => "variances_of",
DepKind::inferred_outlives_crate => "inferred_outlives_crate",
DepKind::associated_item_def_ids => "associated_item_def_ids",
DepKind::associated_item => "associated_item",
DepKind::associated_items => "associated_items",
DepKind::impl_item_implementor_ids =>
"impl_item_implementor_ids",
DepKind::associated_types_for_impl_traits_in_trait_or_impl =>
"associated_types_for_impl_traits_in_trait_or_impl",
DepKind::impl_trait_header => "impl_trait_header",
DepKind::impl_is_fully_generic_for_reflection =>
"impl_is_fully_generic_for_reflection",
DepKind::impl_self_is_guaranteed_unsized =>
"impl_self_is_guaranteed_unsized",
DepKind::inherent_impls => "inherent_impls",
DepKind::incoherent_impls => "incoherent_impls",
DepKind::check_transmutes => "check_transmutes",
DepKind::check_offloads => "check_offloads",
DepKind::check_unsafety => "check_unsafety",
DepKind::check_tail_calls => "check_tail_calls",
DepKind::assumed_wf_types => "assumed_wf_types",
DepKind::assumed_wf_types_for_rpitit =>
"assumed_wf_types_for_rpitit",
DepKind::fn_sig => "fn_sig",
DepKind::lint_mod => "lint_mod",
DepKind::check_unused_traits => "check_unused_traits",
DepKind::check_mod_attrs => "check_mod_attrs",
DepKind::check_mod_unstable_api_usage =>
"check_mod_unstable_api_usage",
DepKind::check_mod_privacy => "check_mod_privacy",
DepKind::check_liveness => "check_liveness",
DepKind::live_symbols_and_ignored_derived_traits =>
"live_symbols_and_ignored_derived_traits",
DepKind::check_mod_deathness => "check_mod_deathness",
DepKind::check_type_wf => "check_type_wf",
DepKind::coerce_unsized_info => "coerce_unsized_info",
DepKind::typeck_root => "typeck_root",
DepKind::used_trait_imports => "used_trait_imports",
DepKind::coherent_trait => "coherent_trait",
DepKind::mir_borrowck => "mir_borrowck",
DepKind::crate_inherent_impls => "crate_inherent_impls",
DepKind::crate_inherent_impls_validity_check =>
"crate_inherent_impls_validity_check",
DepKind::crate_inherent_impls_overlap_check =>
"crate_inherent_impls_overlap_check",
DepKind::orphan_check_impl => "orphan_check_impl",
DepKind::mir_callgraph_cyclic => "mir_callgraph_cyclic",
DepKind::mir_inliner_callees => "mir_inliner_callees",
DepKind::tag_for_variant => "tag_for_variant",
DepKind::eval_to_allocation_raw => "eval_to_allocation_raw",
DepKind::eval_static_initializer => "eval_static_initializer",
DepKind::eval_to_const_value_raw => "eval_to_const_value_raw",
DepKind::eval_to_valtree => "eval_to_valtree",
DepKind::valtree_to_const_val => "valtree_to_const_val",
DepKind::lit_to_const => "lit_to_const",
DepKind::check_match => "check_match",
DepKind::effective_visibilities => "effective_visibilities",
DepKind::check_private_in_public => "check_private_in_public",
DepKind::reachable_set => "reachable_set",
DepKind::region_scope_tree => "region_scope_tree",
DepKind::mir_shims => "mir_shims",
DepKind::symbol_name => "symbol_name",
DepKind::def_kind => "def_kind",
DepKind::def_span => "def_span",
DepKind::def_ident_span => "def_ident_span",
DepKind::ty_span => "ty_span",
DepKind::lookup_stability => "lookup_stability",
DepKind::lookup_const_stability => "lookup_const_stability",
DepKind::lookup_default_body_stability =>
"lookup_default_body_stability",
DepKind::should_inherit_track_caller =>
"should_inherit_track_caller",
DepKind::inherited_align => "inherited_align",
DepKind::lookup_deprecation_entry =>
"lookup_deprecation_entry",
DepKind::is_doc_hidden => "is_doc_hidden",
DepKind::is_doc_notable_trait => "is_doc_notable_trait",
DepKind::attrs_for_def => "attrs_for_def",
DepKind::codegen_fn_attrs => "codegen_fn_attrs",
DepKind::asm_target_features => "asm_target_features",
DepKind::fn_arg_idents => "fn_arg_idents",
DepKind::rendered_const => "rendered_const",
DepKind::rendered_precise_capturing_args =>
"rendered_precise_capturing_args",
DepKind::impl_parent => "impl_parent",
DepKind::is_mir_available => "is_mir_available",
DepKind::own_existential_vtable_entries =>
"own_existential_vtable_entries",
DepKind::vtable_entries => "vtable_entries",
DepKind::first_method_vtable_slot =>
"first_method_vtable_slot",
DepKind::supertrait_vtable_slot => "supertrait_vtable_slot",
DepKind::vtable_allocation => "vtable_allocation",
DepKind::codegen_select_candidate =>
"codegen_select_candidate",
DepKind::all_local_trait_impls => "all_local_trait_impls",
DepKind::local_trait_impls => "local_trait_impls",
DepKind::trait_impls_of => "trait_impls_of",
DepKind::specialization_graph_of => "specialization_graph_of",
DepKind::dyn_compatibility_violations =>
"dyn_compatibility_violations",
DepKind::is_dyn_compatible => "is_dyn_compatible",
DepKind::param_env => "param_env",
DepKind::param_env_normalized_for_post_analysis =>
"param_env_normalized_for_post_analysis",
DepKind::is_copy_raw => "is_copy_raw",
DepKind::is_use_cloned_raw => "is_use_cloned_raw",
DepKind::is_sized_raw => "is_sized_raw",
DepKind::is_freeze_raw => "is_freeze_raw",
DepKind::is_unsafe_unpin_raw => "is_unsafe_unpin_raw",
DepKind::is_unpin_raw => "is_unpin_raw",
DepKind::is_async_drop_raw => "is_async_drop_raw",
DepKind::needs_drop_raw => "needs_drop_raw",
DepKind::needs_async_drop_raw => "needs_async_drop_raw",
DepKind::has_significant_drop_raw =>
"has_significant_drop_raw",
DepKind::has_structural_eq_impl => "has_structural_eq_impl",
DepKind::adt_drop_tys => "adt_drop_tys",
DepKind::adt_async_drop_tys => "adt_async_drop_tys",
DepKind::adt_significant_drop_tys =>
"adt_significant_drop_tys",
DepKind::list_significant_drop_tys =>
"list_significant_drop_tys",
DepKind::layout_of => "layout_of",
DepKind::fn_abi_of_fn_ptr => "fn_abi_of_fn_ptr",
DepKind::fn_abi_of_instance_no_deduced_attrs =>
"fn_abi_of_instance_no_deduced_attrs",
DepKind::fn_abi_of_instance_raw => "fn_abi_of_instance_raw",
DepKind::dylib_dependency_formats =>
"dylib_dependency_formats",
DepKind::dependency_formats => "dependency_formats",
DepKind::is_compiler_builtins => "is_compiler_builtins",
DepKind::has_global_allocator => "has_global_allocator",
DepKind::has_alloc_error_handler => "has_alloc_error_handler",
DepKind::has_panic_handler => "has_panic_handler",
DepKind::is_profiler_runtime => "is_profiler_runtime",
DepKind::has_ffi_unwind_calls => "has_ffi_unwind_calls",
DepKind::required_panic_strategy => "required_panic_strategy",
DepKind::panic_in_drop_strategy => "panic_in_drop_strategy",
DepKind::is_no_builtins => "is_no_builtins",
DepKind::symbol_mangling_version => "symbol_mangling_version",
DepKind::extern_crate => "extern_crate",
DepKind::specialization_enabled_in =>
"specialization_enabled_in",
DepKind::specializes => "specializes",
DepKind::defaultness => "defaultness",
DepKind::default_field => "default_field",
DepKind::check_well_formed => "check_well_formed",
DepKind::enforce_impl_non_lifetime_params_are_constrained =>
"enforce_impl_non_lifetime_params_are_constrained",
DepKind::reachable_non_generics => "reachable_non_generics",
DepKind::is_reachable_non_generic =>
"is_reachable_non_generic",
DepKind::is_unreachable_local_definition =>
"is_unreachable_local_definition",
DepKind::upstream_monomorphizations =>
"upstream_monomorphizations",
DepKind::upstream_monomorphizations_for =>
"upstream_monomorphizations_for",
DepKind::upstream_drop_glue_for => "upstream_drop_glue_for",
DepKind::upstream_async_drop_glue_for =>
"upstream_async_drop_glue_for",
DepKind::foreign_modules => "foreign_modules",
DepKind::clashing_extern_declarations =>
"clashing_extern_declarations",
DepKind::entry_fn => "entry_fn",
DepKind::proc_macro_decls_static => "proc_macro_decls_static",
DepKind::crate_hash => "crate_hash",
DepKind::crate_host_hash => "crate_host_hash",
DepKind::extra_filename => "extra_filename",
DepKind::crate_extern_paths => "crate_extern_paths",
DepKind::implementations_of_trait =>
"implementations_of_trait",
DepKind::crate_incoherent_impls => "crate_incoherent_impls",
DepKind::native_library => "native_library",
DepKind::inherit_sig_for_delegation_item =>
"inherit_sig_for_delegation_item",
DepKind::delegation_user_specified_args =>
"delegation_user_specified_args",
DepKind::resolve_bound_vars => "resolve_bound_vars",
DepKind::named_variable_map => "named_variable_map",
DepKind::is_late_bound_map => "is_late_bound_map",
DepKind::object_lifetime_default => "object_lifetime_default",
DepKind::late_bound_vars_map => "late_bound_vars_map",
DepKind::opaque_captured_lifetimes =>
"opaque_captured_lifetimes",
DepKind::live_args_for_alias_from_outlives_bounds =>
"live_args_for_alias_from_outlives_bounds",
DepKind::args_known_to_outlive_alias_params =>
"args_known_to_outlive_alias_params",
DepKind::visibility => "visibility",
DepKind::inhabited_predicate_adt => "inhabited_predicate_adt",
DepKind::inhabited_predicate_type =>
"inhabited_predicate_type",
DepKind::is_opsem_inhabited_raw => "is_opsem_inhabited_raw",
DepKind::crate_dep_kind => "crate_dep_kind",
DepKind::crate_name => "crate_name",
DepKind::module_children => "module_children",
DepKind::num_extern_def_ids => "num_extern_def_ids",
DepKind::lib_features => "lib_features",
DepKind::stability_implications => "stability_implications",
DepKind::intrinsic_raw => "intrinsic_raw",
DepKind::get_lang_items => "get_lang_items",
DepKind::all_diagnostic_items => "all_diagnostic_items",
DepKind::all_canonical_symbols => "all_canonical_symbols",
DepKind::defined_lang_items => "defined_lang_items",
DepKind::diagnostic_items => "diagnostic_items",
DepKind::canonical_symbols => "canonical_symbols",
DepKind::missing_lang_items => "missing_lang_items",
DepKind::visible_parent_map => "visible_parent_map",
DepKind::trimmed_def_paths => "trimmed_def_paths",
DepKind::missing_extern_crate_item =>
"missing_extern_crate_item",
DepKind::used_crate_source => "used_crate_source",
DepKind::debugger_visualizers => "debugger_visualizers",
DepKind::postorder_cnums => "postorder_cnums",
DepKind::is_private_dep => "is_private_dep",
DepKind::allocator_kind => "allocator_kind",
DepKind::alloc_error_handler_kind =>
"alloc_error_handler_kind",
DepKind::upvars_mentioned => "upvars_mentioned",
DepKind::crates => "crates",
DepKind::used_crates => "used_crates",
DepKind::duplicate_crate_names => "duplicate_crate_names",
DepKind::traits => "traits",
DepKind::trait_impls_in_crate => "trait_impls_in_crate",
DepKind::stable_order_of_exportable_impls =>
"stable_order_of_exportable_impls",
DepKind::exportable_items => "exportable_items",
DepKind::exported_non_generic_symbols =>
"exported_non_generic_symbols",
DepKind::exported_generic_symbols =>
"exported_generic_symbols",
DepKind::collect_and_partition_mono_items =>
"collect_and_partition_mono_items",
DepKind::is_codegened_item => "is_codegened_item",
DepKind::codegen_unit => "codegen_unit",
DepKind::backend_optimization_level =>
"backend_optimization_level",
DepKind::output_filenames => "output_filenames",
DepKind::normalize_canonicalized_projection =>
"normalize_canonicalized_projection",
DepKind::normalize_canonicalized_free_alias =>
"normalize_canonicalized_free_alias",
DepKind::normalize_canonicalized_inherent_projection =>
"normalize_canonicalized_inherent_projection",
DepKind::try_normalize_generic_arg_after_erasing_regions =>
"try_normalize_generic_arg_after_erasing_regions",
DepKind::implied_outlives_bounds => "implied_outlives_bounds",
DepKind::mir_borrowck_implied_outlives_bounds =>
"mir_borrowck_implied_outlives_bounds",
DepKind::dropck_outlives => "dropck_outlives",
DepKind::evaluate_obligation => "evaluate_obligation",
DepKind::type_op_ascribe_user_type =>
"type_op_ascribe_user_type",
DepKind::type_op_prove_predicate => "type_op_prove_predicate",
DepKind::type_op_normalize_ty => "type_op_normalize_ty",
DepKind::type_op_normalize_clause =>
"type_op_normalize_clause",
DepKind::type_op_normalize_poly_fn_sig =>
"type_op_normalize_poly_fn_sig",
DepKind::type_op_normalize_fn_sig =>
"type_op_normalize_fn_sig",
DepKind::instantiate_and_check_impossible_clauses =>
"instantiate_and_check_impossible_clauses",
DepKind::is_impossible_associated_item =>
"is_impossible_associated_item",
DepKind::method_autoderef_steps => "method_autoderef_steps",
DepKind::evaluate_root_goal_for_proof_tree_raw =>
"evaluate_root_goal_for_proof_tree_raw",
DepKind::rust_target_features => "rust_target_features",
DepKind::implied_target_features => "implied_target_features",
DepKind::features_query => "features_query",
DepKind::crate_for_resolver => "crate_for_resolver",
DepKind::resolve_instance_raw => "resolve_instance_raw",
DepKind::reveal_opaque_types_in_bounds =>
"reveal_opaque_types_in_bounds",
DepKind::limits => "limits",
DepKind::diagnostic_hir_wf_check => "diagnostic_hir_wf_check",
DepKind::global_backend_features => "global_backend_features",
DepKind::check_validity_requirement =>
"check_validity_requirement",
DepKind::compare_impl_item => "compare_impl_item",
DepKind::deduced_param_attrs => "deduced_param_attrs",
DepKind::doc_link_resolutions => "doc_link_resolutions",
DepKind::doc_link_traits_in_scope =>
"doc_link_traits_in_scope",
DepKind::stripped_cfg_items => "stripped_cfg_items",
DepKind::generics_require_sized_self =>
"generics_require_sized_self",
DepKind::cross_crate_inlinable => "cross_crate_inlinable",
DepKind::check_mono_item => "check_mono_item",
DepKind::items_of_instance => "items_of_instance",
DepKind::size_estimate => "size_estimate",
DepKind::anon_const_kind => "anon_const_kind",
DepKind::trivial_const => "trivial_const",
DepKind::sanitizer_settings_for => "sanitizer_settings_for",
DepKind::check_externally_implementable_items =>
"check_externally_implementable_items",
DepKind::externally_implementable_items =>
"externally_implementable_items",
})
}
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::marker::StructuralPartialEq for DepKind { }
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::cmp::PartialEq for DepKind {
#[inline]
fn eq(&self, other: &DepKind) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::cmp::Eq for DepKind {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::hash::Hash for DepKind {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}
fn dep_kind_from_label_string(label: &str) -> Result<DepKind, ()> {
match label {
"Null" => Ok(self::DepKind::Null),
"Red" => Ok(self::DepKind::Red),
"SideEffect" => Ok(self::DepKind::SideEffect),
"AnonZeroDeps" => Ok(self::DepKind::AnonZeroDeps),
"TraitSelect" => Ok(self::DepKind::TraitSelect),
"CompileCodegenUnit" => Ok(self::DepKind::CompileCodegenUnit),
"CompileMonoItem" => Ok(self::DepKind::CompileMonoItem),
"Metadata" => Ok(self::DepKind::Metadata),
"derive_macro_expansion" => Ok(self::DepKind::derive_macro_expansion),
"trigger_delayed_bug" => Ok(self::DepKind::trigger_delayed_bug),
"registered_attr_tools" => Ok(self::DepKind::registered_attr_tools),
"registered_lint_tools" => Ok(self::DepKind::registered_lint_tools),
"early_lint_checks" => Ok(self::DepKind::early_lint_checks),
"env_var_os" => Ok(self::DepKind::env_var_os),
"resolutions" => Ok(self::DepKind::resolutions),
"resolver_for_lowering_raw" =>
Ok(self::DepKind::resolver_for_lowering_raw),
"index_ast" => Ok(self::DepKind::index_ast),
"source_span" => Ok(self::DepKind::source_span),
"lower_to_hir" => Ok(self::DepKind::lower_to_hir),
"hir_owner" => Ok(self::DepKind::hir_owner),
"hir_crate_items" => Ok(self::DepKind::hir_crate_items),
"hir_module_items" => Ok(self::DepKind::hir_module_items),
"hir_owner_parent_q" => Ok(self::DepKind::hir_owner_parent_q),
"hir_attr_map" => Ok(self::DepKind::hir_attr_map),
"const_param_default" => Ok(self::DepKind::const_param_default),
"const_of_item" => Ok(self::DepKind::const_of_item),
"type_of" => Ok(self::DepKind::type_of),
"type_of_opaque" => Ok(self::DepKind::type_of_opaque),
"type_of_opaque_hir_typeck" =>
Ok(self::DepKind::type_of_opaque_hir_typeck),
"type_alias_is_checked" => Ok(self::DepKind::type_alias_is_checked),
"collect_return_position_impl_trait_in_trait_tys" =>
Ok(self::DepKind::collect_return_position_impl_trait_in_trait_tys),
"opaque_ty_origin" => Ok(self::DepKind::opaque_ty_origin),
"unsizing_params_for_adt" =>
Ok(self::DepKind::unsizing_params_for_adt),
"analysis" => Ok(self::DepKind::analysis),
"check_expectations" => Ok(self::DepKind::check_expectations),
"generics_of" => Ok(self::DepKind::generics_of),
"clauses_of" => Ok(self::DepKind::clauses_of),
"opaque_types_defined_by" =>
Ok(self::DepKind::opaque_types_defined_by),
"nested_bodies_within" => Ok(self::DepKind::nested_bodies_within),
"explicit_item_bounds" => Ok(self::DepKind::explicit_item_bounds),
"explicit_item_self_bounds" =>
Ok(self::DepKind::explicit_item_self_bounds),
"item_bounds" => Ok(self::DepKind::item_bounds),
"item_self_bounds" => Ok(self::DepKind::item_self_bounds),
"item_non_self_bounds" => Ok(self::DepKind::item_non_self_bounds),
"impl_super_outlives" => Ok(self::DepKind::impl_super_outlives),
"native_libraries" => Ok(self::DepKind::native_libraries),
"shallow_lint_levels_on" => Ok(self::DepKind::shallow_lint_levels_on),
"lint_expectations" => Ok(self::DepKind::lint_expectations),
"skippable_lints" => Ok(self::DepKind::skippable_lints),
"expn_that_defined" => Ok(self::DepKind::expn_that_defined),
"is_panic_runtime" => Ok(self::DepKind::is_panic_runtime),
"check_representability" => Ok(self::DepKind::check_representability),
"check_representability_adt_ty" =>
Ok(self::DepKind::check_representability_adt_ty),
"params_in_repr" => Ok(self::DepKind::params_in_repr),
"thir_body" => Ok(self::DepKind::thir_body),
"mir_keys" => Ok(self::DepKind::mir_keys),
"mir_const_qualif" => Ok(self::DepKind::mir_const_qualif),
"mir_built" => Ok(self::DepKind::mir_built),
"thir_abstract_const" => Ok(self::DepKind::thir_abstract_const),
"mir_drops_elaborated_and_const_checked" =>
Ok(self::DepKind::mir_drops_elaborated_and_const_checked),
"mir_for_ctfe" => Ok(self::DepKind::mir_for_ctfe),
"mir_promoted" => Ok(self::DepKind::mir_promoted),
"closure_typeinfo" => Ok(self::DepKind::closure_typeinfo),
"closure_saved_names_of_captured_variables" =>
Ok(self::DepKind::closure_saved_names_of_captured_variables),
"mir_coroutine_witnesses" =>
Ok(self::DepKind::mir_coroutine_witnesses),
"check_coroutine_obligations" =>
Ok(self::DepKind::check_coroutine_obligations),
"check_potentially_region_dependent_goals" =>
Ok(self::DepKind::check_potentially_region_dependent_goals),
"optimized_mir" => Ok(self::DepKind::optimized_mir),
"coverage_attr_on" => Ok(self::DepKind::coverage_attr_on),
"coverage_ids_info" => Ok(self::DepKind::coverage_ids_info),
"promoted_mir" => Ok(self::DepKind::promoted_mir),
"erase_and_anonymize_regions_ty" =>
Ok(self::DepKind::erase_and_anonymize_regions_ty),
"wasm_import_module_map" => Ok(self::DepKind::wasm_import_module_map),
"trait_explicit_clauses_and_bounds" =>
Ok(self::DepKind::trait_explicit_clauses_and_bounds),
"explicit_clauses_of" => Ok(self::DepKind::explicit_clauses_of),
"inferred_outlives_of" => Ok(self::DepKind::inferred_outlives_of),
"explicit_super_clauses_of" =>
Ok(self::DepKind::explicit_super_clauses_of),
"explicit_implied_clauses_of" =>
Ok(self::DepKind::explicit_implied_clauses_of),
"explicit_supertraits_containing_assoc_item" =>
Ok(self::DepKind::explicit_supertraits_containing_assoc_item),
"const_conditions" => Ok(self::DepKind::const_conditions),
"explicit_implied_const_bounds" =>
Ok(self::DepKind::explicit_implied_const_bounds),
"type_param_clauses" => Ok(self::DepKind::type_param_clauses),
"trait_def" => Ok(self::DepKind::trait_def),
"adt_def" => Ok(self::DepKind::adt_def),
"adt_destructor" => Ok(self::DepKind::adt_destructor),
"adt_async_destructor" => Ok(self::DepKind::adt_async_destructor),
"adt_sizedness_constraint" =>
Ok(self::DepKind::adt_sizedness_constraint),
"adt_dtorck_constraint" => Ok(self::DepKind::adt_dtorck_constraint),
"constness" => Ok(self::DepKind::constness),
"asyncness" => Ok(self::DepKind::asyncness),
"is_promotable_const_fn" => Ok(self::DepKind::is_promotable_const_fn),
"coroutine_by_move_body_def_id" =>
Ok(self::DepKind::coroutine_by_move_body_def_id),
"coroutine_kind" => Ok(self::DepKind::coroutine_kind),
"coroutine_for_closure" => Ok(self::DepKind::coroutine_for_closure),
"coroutine_hidden_types" => Ok(self::DepKind::coroutine_hidden_types),
"crate_variances" => Ok(self::DepKind::crate_variances),
"variances_of" => Ok(self::DepKind::variances_of),
"inferred_outlives_crate" =>
Ok(self::DepKind::inferred_outlives_crate),
"associated_item_def_ids" =>
Ok(self::DepKind::associated_item_def_ids),
"associated_item" => Ok(self::DepKind::associated_item),
"associated_items" => Ok(self::DepKind::associated_items),
"impl_item_implementor_ids" =>
Ok(self::DepKind::impl_item_implementor_ids),
"associated_types_for_impl_traits_in_trait_or_impl" =>
Ok(self::DepKind::associated_types_for_impl_traits_in_trait_or_impl),
"impl_trait_header" => Ok(self::DepKind::impl_trait_header),
"impl_is_fully_generic_for_reflection" =>
Ok(self::DepKind::impl_is_fully_generic_for_reflection),
"impl_self_is_guaranteed_unsized" =>
Ok(self::DepKind::impl_self_is_guaranteed_unsized),
"inherent_impls" => Ok(self::DepKind::inherent_impls),
"incoherent_impls" => Ok(self::DepKind::incoherent_impls),
"check_transmutes" => Ok(self::DepKind::check_transmutes),
"check_offloads" => Ok(self::DepKind::check_offloads),
"check_unsafety" => Ok(self::DepKind::check_unsafety),
"check_tail_calls" => Ok(self::DepKind::check_tail_calls),
"assumed_wf_types" => Ok(self::DepKind::assumed_wf_types),
"assumed_wf_types_for_rpitit" =>
Ok(self::DepKind::assumed_wf_types_for_rpitit),
"fn_sig" => Ok(self::DepKind::fn_sig),
"lint_mod" => Ok(self::DepKind::lint_mod),
"check_unused_traits" => Ok(self::DepKind::check_unused_traits),
"check_mod_attrs" => Ok(self::DepKind::check_mod_attrs),
"check_mod_unstable_api_usage" =>
Ok(self::DepKind::check_mod_unstable_api_usage),
"check_mod_privacy" => Ok(self::DepKind::check_mod_privacy),
"check_liveness" => Ok(self::DepKind::check_liveness),
"live_symbols_and_ignored_derived_traits" =>
Ok(self::DepKind::live_symbols_and_ignored_derived_traits),
"check_mod_deathness" => Ok(self::DepKind::check_mod_deathness),
"check_type_wf" => Ok(self::DepKind::check_type_wf),
"coerce_unsized_info" => Ok(self::DepKind::coerce_unsized_info),
"typeck_root" => Ok(self::DepKind::typeck_root),
"used_trait_imports" => Ok(self::DepKind::used_trait_imports),
"coherent_trait" => Ok(self::DepKind::coherent_trait),
"mir_borrowck" => Ok(self::DepKind::mir_borrowck),
"crate_inherent_impls" => Ok(self::DepKind::crate_inherent_impls),
"crate_inherent_impls_validity_check" =>
Ok(self::DepKind::crate_inherent_impls_validity_check),
"crate_inherent_impls_overlap_check" =>
Ok(self::DepKind::crate_inherent_impls_overlap_check),
"orphan_check_impl" => Ok(self::DepKind::orphan_check_impl),
"mir_callgraph_cyclic" => Ok(self::DepKind::mir_callgraph_cyclic),
"mir_inliner_callees" => Ok(self::DepKind::mir_inliner_callees),
"tag_for_variant" => Ok(self::DepKind::tag_for_variant),
"eval_to_allocation_raw" => Ok(self::DepKind::eval_to_allocation_raw),
"eval_static_initializer" =>
Ok(self::DepKind::eval_static_initializer),
"eval_to_const_value_raw" =>
Ok(self::DepKind::eval_to_const_value_raw),
"eval_to_valtree" => Ok(self::DepKind::eval_to_valtree),
"valtree_to_const_val" => Ok(self::DepKind::valtree_to_const_val),
"lit_to_const" => Ok(self::DepKind::lit_to_const),
"check_match" => Ok(self::DepKind::check_match),
"effective_visibilities" => Ok(self::DepKind::effective_visibilities),
"check_private_in_public" =>
Ok(self::DepKind::check_private_in_public),
"reachable_set" => Ok(self::DepKind::reachable_set),
"region_scope_tree" => Ok(self::DepKind::region_scope_tree),
"mir_shims" => Ok(self::DepKind::mir_shims),
"symbol_name" => Ok(self::DepKind::symbol_name),
"def_kind" => Ok(self::DepKind::def_kind),
"def_span" => Ok(self::DepKind::def_span),
"def_ident_span" => Ok(self::DepKind::def_ident_span),
"ty_span" => Ok(self::DepKind::ty_span),
"lookup_stability" => Ok(self::DepKind::lookup_stability),
"lookup_const_stability" => Ok(self::DepKind::lookup_const_stability),
"lookup_default_body_stability" =>
Ok(self::DepKind::lookup_default_body_stability),
"should_inherit_track_caller" =>
Ok(self::DepKind::should_inherit_track_caller),
"inherited_align" => Ok(self::DepKind::inherited_align),
"lookup_deprecation_entry" =>
Ok(self::DepKind::lookup_deprecation_entry),
"is_doc_hidden" => Ok(self::DepKind::is_doc_hidden),
"is_doc_notable_trait" => Ok(self::DepKind::is_doc_notable_trait),
"attrs_for_def" => Ok(self::DepKind::attrs_for_def),
"codegen_fn_attrs" => Ok(self::DepKind::codegen_fn_attrs),
"asm_target_features" => Ok(self::DepKind::asm_target_features),
"fn_arg_idents" => Ok(self::DepKind::fn_arg_idents),
"rendered_const" => Ok(self::DepKind::rendered_const),
"rendered_precise_capturing_args" =>
Ok(self::DepKind::rendered_precise_capturing_args),
"impl_parent" => Ok(self::DepKind::impl_parent),
"is_mir_available" => Ok(self::DepKind::is_mir_available),
"own_existential_vtable_entries" =>
Ok(self::DepKind::own_existential_vtable_entries),
"vtable_entries" => Ok(self::DepKind::vtable_entries),
"first_method_vtable_slot" =>
Ok(self::DepKind::first_method_vtable_slot),
"supertrait_vtable_slot" => Ok(self::DepKind::supertrait_vtable_slot),
"vtable_allocation" => Ok(self::DepKind::vtable_allocation),
"codegen_select_candidate" =>
Ok(self::DepKind::codegen_select_candidate),
"all_local_trait_impls" => Ok(self::DepKind::all_local_trait_impls),
"local_trait_impls" => Ok(self::DepKind::local_trait_impls),
"trait_impls_of" => Ok(self::DepKind::trait_impls_of),
"specialization_graph_of" =>
Ok(self::DepKind::specialization_graph_of),
"dyn_compatibility_violations" =>
Ok(self::DepKind::dyn_compatibility_violations),
"is_dyn_compatible" => Ok(self::DepKind::is_dyn_compatible),
"param_env" => Ok(self::DepKind::param_env),
"param_env_normalized_for_post_analysis" =>
Ok(self::DepKind::param_env_normalized_for_post_analysis),
"is_copy_raw" => Ok(self::DepKind::is_copy_raw),
"is_use_cloned_raw" => Ok(self::DepKind::is_use_cloned_raw),
"is_sized_raw" => Ok(self::DepKind::is_sized_raw),
"is_freeze_raw" => Ok(self::DepKind::is_freeze_raw),
"is_unsafe_unpin_raw" => Ok(self::DepKind::is_unsafe_unpin_raw),
"is_unpin_raw" => Ok(self::DepKind::is_unpin_raw),
"is_async_drop_raw" => Ok(self::DepKind::is_async_drop_raw),
"needs_drop_raw" => Ok(self::DepKind::needs_drop_raw),
"needs_async_drop_raw" => Ok(self::DepKind::needs_async_drop_raw),
"has_significant_drop_raw" =>
Ok(self::DepKind::has_significant_drop_raw),
"has_structural_eq_impl" => Ok(self::DepKind::has_structural_eq_impl),
"adt_drop_tys" => Ok(self::DepKind::adt_drop_tys),
"adt_async_drop_tys" => Ok(self::DepKind::adt_async_drop_tys),
"adt_significant_drop_tys" =>
Ok(self::DepKind::adt_significant_drop_tys),
"list_significant_drop_tys" =>
Ok(self::DepKind::list_significant_drop_tys),
"layout_of" => Ok(self::DepKind::layout_of),
"fn_abi_of_fn_ptr" => Ok(self::DepKind::fn_abi_of_fn_ptr),
"fn_abi_of_instance_no_deduced_attrs" =>
Ok(self::DepKind::fn_abi_of_instance_no_deduced_attrs),
"fn_abi_of_instance_raw" => Ok(self::DepKind::fn_abi_of_instance_raw),
"dylib_dependency_formats" =>
Ok(self::DepKind::dylib_dependency_formats),
"dependency_formats" => Ok(self::DepKind::dependency_formats),
"is_compiler_builtins" => Ok(self::DepKind::is_compiler_builtins),
"has_global_allocator" => Ok(self::DepKind::has_global_allocator),
"has_alloc_error_handler" =>
Ok(self::DepKind::has_alloc_error_handler),
"has_panic_handler" => Ok(self::DepKind::has_panic_handler),
"is_profiler_runtime" => Ok(self::DepKind::is_profiler_runtime),
"has_ffi_unwind_calls" => Ok(self::DepKind::has_ffi_unwind_calls),
"required_panic_strategy" =>
Ok(self::DepKind::required_panic_strategy),
"panic_in_drop_strategy" => Ok(self::DepKind::panic_in_drop_strategy),
"is_no_builtins" => Ok(self::DepKind::is_no_builtins),
"symbol_mangling_version" =>
Ok(self::DepKind::symbol_mangling_version),
"extern_crate" => Ok(self::DepKind::extern_crate),
"specialization_enabled_in" =>
Ok(self::DepKind::specialization_enabled_in),
"specializes" => Ok(self::DepKind::specializes),
"defaultness" => Ok(self::DepKind::defaultness),
"default_field" => Ok(self::DepKind::default_field),
"check_well_formed" => Ok(self::DepKind::check_well_formed),
"enforce_impl_non_lifetime_params_are_constrained" =>
Ok(self::DepKind::enforce_impl_non_lifetime_params_are_constrained),
"reachable_non_generics" => Ok(self::DepKind::reachable_non_generics),
"is_reachable_non_generic" =>
Ok(self::DepKind::is_reachable_non_generic),
"is_unreachable_local_definition" =>
Ok(self::DepKind::is_unreachable_local_definition),
"upstream_monomorphizations" =>
Ok(self::DepKind::upstream_monomorphizations),
"upstream_monomorphizations_for" =>
Ok(self::DepKind::upstream_monomorphizations_for),
"upstream_drop_glue_for" => Ok(self::DepKind::upstream_drop_glue_for),
"upstream_async_drop_glue_for" =>
Ok(self::DepKind::upstream_async_drop_glue_for),
"foreign_modules" => Ok(self::DepKind::foreign_modules),
"clashing_extern_declarations" =>
Ok(self::DepKind::clashing_extern_declarations),
"entry_fn" => Ok(self::DepKind::entry_fn),
"proc_macro_decls_static" =>
Ok(self::DepKind::proc_macro_decls_static),
"crate_hash" => Ok(self::DepKind::crate_hash),
"crate_host_hash" => Ok(self::DepKind::crate_host_hash),
"extra_filename" => Ok(self::DepKind::extra_filename),
"crate_extern_paths" => Ok(self::DepKind::crate_extern_paths),
"implementations_of_trait" =>
Ok(self::DepKind::implementations_of_trait),
"crate_incoherent_impls" => Ok(self::DepKind::crate_incoherent_impls),
"native_library" => Ok(self::DepKind::native_library),
"inherit_sig_for_delegation_item" =>
Ok(self::DepKind::inherit_sig_for_delegation_item),
"delegation_user_specified_args" =>
Ok(self::DepKind::delegation_user_specified_args),
"resolve_bound_vars" => Ok(self::DepKind::resolve_bound_vars),
"named_variable_map" => Ok(self::DepKind::named_variable_map),
"is_late_bound_map" => Ok(self::DepKind::is_late_bound_map),
"object_lifetime_default" =>
Ok(self::DepKind::object_lifetime_default),
"late_bound_vars_map" => Ok(self::DepKind::late_bound_vars_map),
"opaque_captured_lifetimes" =>
Ok(self::DepKind::opaque_captured_lifetimes),
"live_args_for_alias_from_outlives_bounds" =>
Ok(self::DepKind::live_args_for_alias_from_outlives_bounds),
"args_known_to_outlive_alias_params" =>
Ok(self::DepKind::args_known_to_outlive_alias_params),
"visibility" => Ok(self::DepKind::visibility),
"inhabited_predicate_adt" =>
Ok(self::DepKind::inhabited_predicate_adt),
"inhabited_predicate_type" =>
Ok(self::DepKind::inhabited_predicate_type),
"is_opsem_inhabited_raw" => Ok(self::DepKind::is_opsem_inhabited_raw),
"crate_dep_kind" => Ok(self::DepKind::crate_dep_kind),
"crate_name" => Ok(self::DepKind::crate_name),
"module_children" => Ok(self::DepKind::module_children),
"num_extern_def_ids" => Ok(self::DepKind::num_extern_def_ids),
"lib_features" => Ok(self::DepKind::lib_features),
"stability_implications" => Ok(self::DepKind::stability_implications),
"intrinsic_raw" => Ok(self::DepKind::intrinsic_raw),
"get_lang_items" => Ok(self::DepKind::get_lang_items),
"all_diagnostic_items" => Ok(self::DepKind::all_diagnostic_items),
"all_canonical_symbols" => Ok(self::DepKind::all_canonical_symbols),
"defined_lang_items" => Ok(self::DepKind::defined_lang_items),
"diagnostic_items" => Ok(self::DepKind::diagnostic_items),
"canonical_symbols" => Ok(self::DepKind::canonical_symbols),
"missing_lang_items" => Ok(self::DepKind::missing_lang_items),
"visible_parent_map" => Ok(self::DepKind::visible_parent_map),
"trimmed_def_paths" => Ok(self::DepKind::trimmed_def_paths),
"missing_extern_crate_item" =>
Ok(self::DepKind::missing_extern_crate_item),
"used_crate_source" => Ok(self::DepKind::used_crate_source),
"debugger_visualizers" => Ok(self::DepKind::debugger_visualizers),
"postorder_cnums" => Ok(self::DepKind::postorder_cnums),
"is_private_dep" => Ok(self::DepKind::is_private_dep),
"allocator_kind" => Ok(self::DepKind::allocator_kind),
"alloc_error_handler_kind" =>
Ok(self::DepKind::alloc_error_handler_kind),
"upvars_mentioned" => Ok(self::DepKind::upvars_mentioned),
"crates" => Ok(self::DepKind::crates),
"used_crates" => Ok(self::DepKind::used_crates),
"duplicate_crate_names" => Ok(self::DepKind::duplicate_crate_names),
"traits" => Ok(self::DepKind::traits),
"trait_impls_in_crate" => Ok(self::DepKind::trait_impls_in_crate),
"stable_order_of_exportable_impls" =>
Ok(self::DepKind::stable_order_of_exportable_impls),
"exportable_items" => Ok(self::DepKind::exportable_items),
"exported_non_generic_symbols" =>
Ok(self::DepKind::exported_non_generic_symbols),
"exported_generic_symbols" =>
Ok(self::DepKind::exported_generic_symbols),
"collect_and_partition_mono_items" =>
Ok(self::DepKind::collect_and_partition_mono_items),
"is_codegened_item" => Ok(self::DepKind::is_codegened_item),
"codegen_unit" => Ok(self::DepKind::codegen_unit),
"backend_optimization_level" =>
Ok(self::DepKind::backend_optimization_level),
"output_filenames" => Ok(self::DepKind::output_filenames),
"normalize_canonicalized_projection" =>
Ok(self::DepKind::normalize_canonicalized_projection),
"normalize_canonicalized_free_alias" =>
Ok(self::DepKind::normalize_canonicalized_free_alias),
"normalize_canonicalized_inherent_projection" =>
Ok(self::DepKind::normalize_canonicalized_inherent_projection),
"try_normalize_generic_arg_after_erasing_regions" =>
Ok(self::DepKind::try_normalize_generic_arg_after_erasing_regions),
"implied_outlives_bounds" =>
Ok(self::DepKind::implied_outlives_bounds),
"mir_borrowck_implied_outlives_bounds" =>
Ok(self::DepKind::mir_borrowck_implied_outlives_bounds),
"dropck_outlives" => Ok(self::DepKind::dropck_outlives),
"evaluate_obligation" => Ok(self::DepKind::evaluate_obligation),
"type_op_ascribe_user_type" =>
Ok(self::DepKind::type_op_ascribe_user_type),
"type_op_prove_predicate" =>
Ok(self::DepKind::type_op_prove_predicate),
"type_op_normalize_ty" => Ok(self::DepKind::type_op_normalize_ty),
"type_op_normalize_clause" =>
Ok(self::DepKind::type_op_normalize_clause),
"type_op_normalize_poly_fn_sig" =>
Ok(self::DepKind::type_op_normalize_poly_fn_sig),
"type_op_normalize_fn_sig" =>
Ok(self::DepKind::type_op_normalize_fn_sig),
"instantiate_and_check_impossible_clauses" =>
Ok(self::DepKind::instantiate_and_check_impossible_clauses),
"is_impossible_associated_item" =>
Ok(self::DepKind::is_impossible_associated_item),
"method_autoderef_steps" => Ok(self::DepKind::method_autoderef_steps),
"evaluate_root_goal_for_proof_tree_raw" =>
Ok(self::DepKind::evaluate_root_goal_for_proof_tree_raw),
"rust_target_features" => Ok(self::DepKind::rust_target_features),
"implied_target_features" =>
Ok(self::DepKind::implied_target_features),
"features_query" => Ok(self::DepKind::features_query),
"crate_for_resolver" => Ok(self::DepKind::crate_for_resolver),
"resolve_instance_raw" => Ok(self::DepKind::resolve_instance_raw),
"reveal_opaque_types_in_bounds" =>
Ok(self::DepKind::reveal_opaque_types_in_bounds),
"limits" => Ok(self::DepKind::limits),
"diagnostic_hir_wf_check" =>
Ok(self::DepKind::diagnostic_hir_wf_check),
"global_backend_features" =>
Ok(self::DepKind::global_backend_features),
"check_validity_requirement" =>
Ok(self::DepKind::check_validity_requirement),
"compare_impl_item" => Ok(self::DepKind::compare_impl_item),
"deduced_param_attrs" => Ok(self::DepKind::deduced_param_attrs),
"doc_link_resolutions" => Ok(self::DepKind::doc_link_resolutions),
"doc_link_traits_in_scope" =>
Ok(self::DepKind::doc_link_traits_in_scope),
"stripped_cfg_items" => Ok(self::DepKind::stripped_cfg_items),
"generics_require_sized_self" =>
Ok(self::DepKind::generics_require_sized_self),
"cross_crate_inlinable" => Ok(self::DepKind::cross_crate_inlinable),
"check_mono_item" => Ok(self::DepKind::check_mono_item),
"items_of_instance" => Ok(self::DepKind::items_of_instance),
"size_estimate" => Ok(self::DepKind::size_estimate),
"anon_const_kind" => Ok(self::DepKind::anon_const_kind),
"trivial_const" => Ok(self::DepKind::trivial_const),
"sanitizer_settings_for" => Ok(self::DepKind::sanitizer_settings_for),
"check_externally_implementable_items" =>
Ok(self::DepKind::check_externally_implementable_items),
"externally_implementable_items" =>
Ok(self::DepKind::externally_implementable_items),
_ => Err(()),
}
}crate::queries::rustc_with_all_queries! { define_dep_nodes! }
304
305pub(crate) fn make_compile_codegen_unit(tcx: TyCtxt<'_>, name: Symbol) -> DepNode {
308 DepNode::construct(tcx, DepKind::CompileCodegenUnit, &name)
309}
310
311pub(crate) fn make_compile_mono_item<'tcx>(
314 tcx: TyCtxt<'tcx>,
315 mono_item: &MonoItem<'tcx>,
316) -> DepNode {
317 DepNode::construct(tcx, DepKind::CompileMonoItem, mono_item)
318}
319
320pub(crate) fn make_metadata(tcx: TyCtxt<'_>) -> DepNode {
323 DepNode::construct(tcx, DepKind::Metadata, &())
324}
325
326impl DepNode {
327 pub fn extract_def_id(&self, tcx: TyCtxt<'_>) -> Option<DefId> {
338 if tcx.key_fingerprint_style(self.kind) == KeyFingerprintStyle::DefPathHash {
339 tcx.def_path_hash_to_def_id(DefPathHash(self.key_fingerprint.into()))
340 } else {
341 None
342 }
343 }
344
345 pub fn from_label_string(
346 tcx: TyCtxt<'_>,
347 label: &str,
348 def_path_hash: DefPathHash,
349 ) -> Result<DepNode, ()> {
350 let kind = dep_kind_from_label_string(label)?;
351
352 match tcx.key_fingerprint_style(kind) {
353 KeyFingerprintStyle::Opaque | KeyFingerprintStyle::HirId => Err(()),
354 KeyFingerprintStyle::Unit => Ok(DepNode::new_no_params(tcx, kind)),
355 KeyFingerprintStyle::DefPathHash => {
356 Ok(DepNode::from_def_path_hash(tcx, def_path_hash, kind))
357 }
358 }
359 }
360
361 pub fn has_label_string(label: &str) -> bool {
362 dep_kind_from_label_string(label).is_ok()
363 }
364}
365
366pub fn dep_kind_from_label(label: &str) -> DepKind {
368 dep_kind_from_label_string(label)
369 .unwrap_or_else(|_| {
::core::panicking::panic_fmt(format_args!("Query label {0} does not exist",
label));
}panic!("Query label {label} does not exist"))
370}
371
372#[cfg(target_pointer_width = "64")]
374mod size_asserts {
375 use rustc_data_structures::static_assert_size;
376
377 use super::*;
378 const _: [(); 2] = [(); ::std::mem::size_of::<DepKind>()];static_assert_size!(DepKind, 2);
380 const _: [(); 18] = [(); ::std::mem::size_of::<DepNode>()];static_assert_size!(DepNode, 18);
381 }