1use std::fmt::{self, Write};
8use std::hash::Hash;
9
10use rustc_data_structures::fx::FxHashMap;
11use rustc_data_structures::stable_hash::StableHasher;
12use rustc_hashes::Hash64;
13use rustc_index::IndexVec;
14use rustc_macros::{BlobDecodable, Decodable, Encodable, extension};
15pub use rustc_span::def_id::DefPathHash;
16use rustc_span::def_id::{
17 CRATE_DEF_INDEX, CrateNum, DefIndex, LOCAL_CRATE, LocalDefId, LocalDefIdMap, StableCrateId,
18};
19use rustc_span::{Symbol, kw, sym};
20use tracing::{debug, instrument};
21
22use crate::def_path_hash_map::DefPathHashMap;
23
24#[derive(#[automatically_derived]
impl ::core::fmt::Debug for PerParentDisambiguatorState {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"PerParentDisambiguatorState", "parent", &self.parent, "next",
&&self.next)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for PerParentDisambiguatorState {
#[inline]
fn default() -> PerParentDisambiguatorState {
PerParentDisambiguatorState {
parent: ::core::default::Default::default(),
next: ::core::default::Default::default(),
}
}
}Default, #[automatically_derived]
impl ::core::clone::Clone for PerParentDisambiguatorState {
#[inline]
fn clone(&self) -> PerParentDisambiguatorState {
PerParentDisambiguatorState {
parent: ::core::clone::Clone::clone(&self.parent),
next: ::core::clone::Clone::clone(&self.next),
}
}
}Clone)]
25pub struct PerParentDisambiguatorState {
26 #[cfg(debug_assertions)]
27 parent: Option<LocalDefId>,
28 next: FxHashMap<DefPathData, u32>,
29}
30
31impl PerParentDisambiguatorState {
32 #[inline(always)]
33 pub fn new(_parent: LocalDefId) -> PerParentDisambiguatorState {
34 PerParentDisambiguatorState {
35 #[cfg(debug_assertions)]
36 parent: Some(_parent),
37 next: Default::default(),
38 }
39 }
40}
41
42pub trait PerParentDisambiguatorsMap {
fn get_or_create(&mut self, parent: LocalDefId)
-> &mut PerParentDisambiguatorState;
}
impl PerParentDisambiguatorsMap for LocalDefIdMap<PerParentDisambiguatorState>
{
fn get_or_create(&mut self, parent: LocalDefId)
-> &mut PerParentDisambiguatorState {
self.entry(parent).or_insert_with(||
PerParentDisambiguatorState::new(parent))
}
}#[extension(pub trait PerParentDisambiguatorsMap)]
43impl LocalDefIdMap<PerParentDisambiguatorState> {
44 fn get_or_create(&mut self, parent: LocalDefId) -> &mut PerParentDisambiguatorState {
45 self.entry(parent).or_insert_with(|| PerParentDisambiguatorState::new(parent))
46 }
47}
48
49#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Definitions {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "Definitions",
"stable_crate_id", &self.stable_crate_id, "def_id_to_key",
&self.def_id_to_key, "def_path_hashes", &self.def_path_hashes,
"def_path_hash_to_index", &&self.def_path_hash_to_index)
}
}Debug)]
50pub struct Definitions {
51 stable_crate_id: StableCrateId,
52 def_id_to_key: IndexVec<LocalDefId, DefKey>,
53 def_path_hashes: IndexVec<LocalDefId, Hash64>,
55 def_path_hash_to_index: DefPathHashMap,
56}
57
58#[derive(#[automatically_derived]
impl ::core::marker::Copy for DefKey { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DefKey { }
#[automatically_derived]
impl ::core::clone::Clone for DefKey {
#[inline]
fn clone(&self) -> DefKey {
let _: ::core::clone::AssertParamIsClone<Option<DefIndex>>;
let _: ::core::clone::AssertParamIsClone<DisambiguatedDefPathData>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for DefKey { }
#[automatically_derived]
impl ::core::cmp::PartialEq for DefKey {
#[inline]
fn eq(&self, other: &DefKey) -> bool {
self.parent == other.parent &&
self.disambiguated_data == other.disambiguated_data
}
}PartialEq, #[automatically_derived]
impl ::core::fmt::Debug for DefKey {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "DefKey",
"parent", &self.parent, "disambiguated_data",
&&self.disambiguated_data)
}
}Debug, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DefKey {
fn encode(&self, __encoder: &mut __E) {
let DefKey {
parent: ref __binding_0, disambiguated_data: ref __binding_1
} = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::BlobDecoder> ::rustc_serialize::Decodable<__D>
for DefKey {
fn decode(__decoder: &mut __D) -> Self {
DefKey {
parent: ::rustc_serialize::Decodable::decode(__decoder),
disambiguated_data: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};BlobDecodable)]
62pub struct DefKey {
63 pub parent: Option<DefIndex>,
65
66 pub disambiguated_data: DisambiguatedDefPathData,
68}
69
70impl DefKey {
71 pub(crate) fn compute_stable_hash(&self, parent: DefPathHash) -> DefPathHash {
72 let mut hasher = StableHasher::new();
73
74 parent.local_hash().hash(&mut hasher);
77
78 let DisambiguatedDefPathData { ref data, disambiguator } = self.disambiguated_data;
79
80 std::mem::discriminant(data).hash(&mut hasher);
81 if let Some(name) = data.hashed_symbol() {
82 name.as_str().hash(&mut hasher);
85 }
86
87 disambiguator.hash(&mut hasher);
88
89 let local_hash = hasher.finish();
90
91 DefPathHash::new(parent.stable_crate_id(), local_hash)
96 }
97
98 #[inline]
99 pub fn get_opt_name(&self) -> Option<Symbol> {
100 self.disambiguated_data.data.get_opt_name()
101 }
102}
103
104#[derive(#[automatically_derived]
impl ::core::marker::Copy for DisambiguatedDefPathData { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DisambiguatedDefPathData { }
#[automatically_derived]
impl ::core::clone::Clone for DisambiguatedDefPathData {
#[inline]
fn clone(&self) -> DisambiguatedDefPathData {
let _: ::core::clone::AssertParamIsClone<DefPathData>;
let _: ::core::clone::AssertParamIsClone<u32>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for DisambiguatedDefPathData { }
#[automatically_derived]
impl ::core::cmp::PartialEq for DisambiguatedDefPathData {
#[inline]
fn eq(&self, other: &DisambiguatedDefPathData) -> bool {
self.disambiguator == other.disambiguator && self.data == other.data
}
}PartialEq, #[automatically_derived]
impl ::core::fmt::Debug for DisambiguatedDefPathData {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f,
"DisambiguatedDefPathData", "data", &self.data, "disambiguator",
&&self.disambiguator)
}
}Debug, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DisambiguatedDefPathData {
fn encode(&self, __encoder: &mut __E) {
let DisambiguatedDefPathData {
data: ref __binding_0, disambiguator: ref __binding_1 } =
*self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::BlobDecoder> ::rustc_serialize::Decodable<__D>
for DisambiguatedDefPathData {
fn decode(__decoder: &mut __D) -> Self {
DisambiguatedDefPathData {
data: ::rustc_serialize::Decodable::decode(__decoder),
disambiguator: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};BlobDecodable)]
111pub struct DisambiguatedDefPathData {
112 pub data: DefPathData,
113 pub disambiguator: u32,
114}
115
116impl DisambiguatedDefPathData {
117 pub fn as_sym(&self, verbose: bool) -> Symbol {
118 match self.data.name() {
119 DefPathDataName::Named(name) => {
120 if verbose && self.disambiguator != 0 {
121 Symbol::intern(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}#{1}", name,
self.disambiguator))
})format!("{}#{}", name, self.disambiguator))
122 } else {
123 name
124 }
125 }
126 DefPathDataName::Anon { namespace } => {
127 if let DefPathData::AnonAssocTy(method) = self.data {
128 Symbol::intern(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}::{{{1}#{2}}}", method,
namespace, self.disambiguator))
})format!("{}::{{{}#{}}}", method, namespace, self.disambiguator))
129 } else {
130 Symbol::intern(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{{{0}#{1}}}", namespace,
self.disambiguator))
})format!("{{{}#{}}}", namespace, self.disambiguator))
131 }
132 }
133 }
134 }
135}
136
137#[derive(#[automatically_derived]
impl ::core::clone::Clone for DefPath {
#[inline]
fn clone(&self) -> DefPath {
DefPath {
data: ::core::clone::Clone::clone(&self.data),
krate: ::core::clone::Clone::clone(&self.krate),
}
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for DefPath {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "DefPath",
"data", &self.data, "krate", &&self.krate)
}
}Debug, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DefPath {
fn encode(&self, __encoder: &mut __E) {
let DefPath { data: ref __binding_0, krate: ref __binding_1
} = *self;
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
::rustc_serialize::Encodable::<__E>::encode(__binding_1,
__encoder);
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
for DefPath {
fn decode(__decoder: &mut __D) -> Self {
DefPath {
data: ::rustc_serialize::Decodable::decode(__decoder),
krate: ::rustc_serialize::Decodable::decode(__decoder),
}
}
}
};Decodable)]
138pub struct DefPath {
139 pub data: Vec<DisambiguatedDefPathData>,
141
142 pub krate: CrateNum,
144}
145
146impl DefPath {
147 pub fn make<FN>(krate: CrateNum, start_index: DefIndex, mut get_key: FN) -> DefPath
148 where
149 FN: FnMut(DefIndex) -> DefKey,
150 {
151 let mut data = ::alloc::vec::Vec::new()vec![];
152 let mut index = Some(start_index);
153 loop {
154 {
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event /rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs:154",
"rustc_hir_id::definitions", ::tracing::Level::DEBUG,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(154u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&["message"],
::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::DEBUG <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
__CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&format_args!("DefPath::make: krate={0:?} index={1:?}",
krate, index) as &dyn ::tracing::field::Value))])
});
} else { ; }
};debug!("DefPath::make: krate={:?} index={:?}", krate, index);
155 let p = index.unwrap();
156 let key = get_key(p);
157 {
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event /rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs:157",
"rustc_hir_id::definitions", ::tracing::Level::DEBUG,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(157u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&["message"],
::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::DEBUG <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
__CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&format_args!("DefPath::make: key={0:?}",
key) as &dyn ::tracing::field::Value))])
});
} else { ; }
};debug!("DefPath::make: key={:?}", key);
158 match key.disambiguated_data.data {
159 DefPathData::CrateRoot => {
160 if !key.parent.is_none() {
::core::panicking::panic("assertion failed: key.parent.is_none()")
};assert!(key.parent.is_none());
161 break;
162 }
163 _ => {
164 data.push(key.disambiguated_data);
165 index = key.parent;
166 }
167 }
168 }
169 data.reverse();
170 DefPath { data, krate }
171 }
172
173 pub fn to_string_no_crate_verbose(&self) -> String {
177 let mut s = String::with_capacity(self.data.len() * 16);
178
179 for component in &self.data {
180 s.write_fmt(format_args!("::{0}", component.as_sym(true)))write!(s, "::{}", component.as_sym(true)).unwrap();
181 }
182
183 s
184 }
185
186 pub fn to_filename_friendly_no_crate(&self) -> String {
190 let mut s = String::with_capacity(self.data.len() * 16);
191
192 let mut opt_delimiter = None;
193 for component in &self.data {
194 s.extend(opt_delimiter);
195 opt_delimiter = Some('-');
196 s.write_fmt(format_args!("{0}", component.as_sym(true)))write!(s, "{}", component.as_sym(true)).unwrap();
197 }
198
199 s
200 }
201}
202
203#[derive(#[automatically_derived]
impl ::core::marker::Copy for DefPathData { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DefPathData { }
#[automatically_derived]
impl ::core::clone::Clone for DefPathData {
#[inline]
fn clone(&self) -> DefPathData {
let _: ::core::clone::AssertParamIsClone<Symbol>;
*self
}
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for DefPathData {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
DefPathData::CrateRoot =>
::core::fmt::Formatter::write_str(f, "CrateRoot"),
DefPathData::Impl => ::core::fmt::Formatter::write_str(f, "Impl"),
DefPathData::ForeignMod =>
::core::fmt::Formatter::write_str(f, "ForeignMod"),
DefPathData::Use => ::core::fmt::Formatter::write_str(f, "Use"),
DefPathData::GlobalAsm =>
::core::fmt::Formatter::write_str(f, "GlobalAsm"),
DefPathData::TypeNs(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "TypeNs",
&__self_0),
DefPathData::ValueNs(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"ValueNs", &__self_0),
DefPathData::MacroNs(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"MacroNs", &__self_0),
DefPathData::LifetimeNs(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"LifetimeNs", &__self_0),
DefPathData::Closure =>
::core::fmt::Formatter::write_str(f, "Closure"),
DefPathData::TestBinderConstraints =>
::core::fmt::Formatter::write_str(f, "TestBinderConstraints"),
DefPathData::Ctor => ::core::fmt::Formatter::write_str(f, "Ctor"),
DefPathData::AnonConst =>
::core::fmt::Formatter::write_str(f, "AnonConst"),
DefPathData::OpaqueTy =>
::core::fmt::Formatter::write_str(f, "OpaqueTy"),
DefPathData::OpaqueLifetime(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"OpaqueLifetime", &__self_0),
DefPathData::AnonAssocTy(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f,
"AnonAssocTy", &__self_0),
DefPathData::SyntheticCoroutineBody =>
::core::fmt::Formatter::write_str(f,
"SyntheticCoroutineBody"),
DefPathData::NestedStatic =>
::core::fmt::Formatter::write_str(f, "NestedStatic"),
}
}
}Debug, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for DefPathData { }
#[automatically_derived]
impl ::core::cmp::PartialEq for DefPathData {
#[inline]
fn eq(&self, other: &DefPathData) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(DefPathData::TypeNs(__self_0), DefPathData::TypeNs(__arg1_0))
=> __self_0 == __arg1_0,
(DefPathData::ValueNs(__self_0),
DefPathData::ValueNs(__arg1_0)) => __self_0 == __arg1_0,
(DefPathData::MacroNs(__self_0),
DefPathData::MacroNs(__arg1_0)) => __self_0 == __arg1_0,
(DefPathData::LifetimeNs(__self_0),
DefPathData::LifetimeNs(__arg1_0)) => __self_0 == __arg1_0,
(DefPathData::OpaqueLifetime(__self_0),
DefPathData::OpaqueLifetime(__arg1_0)) =>
__self_0 == __arg1_0,
(DefPathData::AnonAssocTy(__self_0),
DefPathData::AnonAssocTy(__arg1_0)) => __self_0 == __arg1_0,
_ => true,
}
}
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for DefPathData {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_fields_are_eq(&self) {
let _: ::core::cmp::AssertParamIsEq<Symbol>;
}
}Eq, #[automatically_derived]
impl ::core::hash::Hash for DefPathData {
#[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);
match self {
DefPathData::TypeNs(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
DefPathData::ValueNs(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
DefPathData::MacroNs(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
DefPathData::LifetimeNs(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
DefPathData::OpaqueLifetime(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
DefPathData::AnonAssocTy(__self_0) =>
::core::hash::Hash::hash(__self_0, state),
_ => {}
}
}
}Hash, const _: () =
{
impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
for DefPathData {
fn encode(&self, __encoder: &mut __E) {
let disc =
match *self {
DefPathData::CrateRoot => { 0usize }
DefPathData::Impl => { 1usize }
DefPathData::ForeignMod => { 2usize }
DefPathData::Use => { 3usize }
DefPathData::GlobalAsm => { 4usize }
DefPathData::TypeNs(ref __binding_0) => { 5usize }
DefPathData::ValueNs(ref __binding_0) => { 6usize }
DefPathData::MacroNs(ref __binding_0) => { 7usize }
DefPathData::LifetimeNs(ref __binding_0) => { 8usize }
DefPathData::Closure => { 9usize }
DefPathData::TestBinderConstraints => { 10usize }
DefPathData::Ctor => { 11usize }
DefPathData::AnonConst => { 12usize }
DefPathData::OpaqueTy => { 13usize }
DefPathData::OpaqueLifetime(ref __binding_0) => { 14usize }
DefPathData::AnonAssocTy(ref __binding_0) => { 15usize }
DefPathData::SyntheticCoroutineBody => { 16usize }
DefPathData::NestedStatic => { 17usize }
};
::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
match *self {
DefPathData::CrateRoot => {}
DefPathData::Impl => {}
DefPathData::ForeignMod => {}
DefPathData::Use => {}
DefPathData::GlobalAsm => {}
DefPathData::TypeNs(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DefPathData::ValueNs(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DefPathData::MacroNs(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DefPathData::LifetimeNs(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DefPathData::Closure => {}
DefPathData::TestBinderConstraints => {}
DefPathData::Ctor => {}
DefPathData::AnonConst => {}
DefPathData::OpaqueTy => {}
DefPathData::OpaqueLifetime(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DefPathData::AnonAssocTy(ref __binding_0) => {
::rustc_serialize::Encodable::<__E>::encode(__binding_0,
__encoder);
}
DefPathData::SyntheticCoroutineBody => {}
DefPathData::NestedStatic => {}
}
}
}
};Encodable, const _: () =
{
impl<__D: ::rustc_span::BlobDecoder> ::rustc_serialize::Decodable<__D>
for DefPathData {
fn decode(__decoder: &mut __D) -> Self {
match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
{
0usize => { DefPathData::CrateRoot }
1usize => { DefPathData::Impl }
2usize => { DefPathData::ForeignMod }
3usize => { DefPathData::Use }
4usize => { DefPathData::GlobalAsm }
5usize => {
DefPathData::TypeNs(::rustc_serialize::Decodable::decode(__decoder))
}
6usize => {
DefPathData::ValueNs(::rustc_serialize::Decodable::decode(__decoder))
}
7usize => {
DefPathData::MacroNs(::rustc_serialize::Decodable::decode(__decoder))
}
8usize => {
DefPathData::LifetimeNs(::rustc_serialize::Decodable::decode(__decoder))
}
9usize => { DefPathData::Closure }
10usize => { DefPathData::TestBinderConstraints }
11usize => { DefPathData::Ctor }
12usize => { DefPathData::AnonConst }
13usize => { DefPathData::OpaqueTy }
14usize => {
DefPathData::OpaqueLifetime(::rustc_serialize::Decodable::decode(__decoder))
}
15usize => {
DefPathData::AnonAssocTy(::rustc_serialize::Decodable::decode(__decoder))
}
16usize => { DefPathData::SyntheticCoroutineBody }
17usize => { DefPathData::NestedStatic }
n => {
::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `DefPathData`, expected 0..18, actual {0}",
n));
}
}
}
}
};BlobDecodable)]
205pub enum DefPathData {
206 CrateRoot,
210
211 Impl,
214 ForeignMod,
216 Use,
218 GlobalAsm,
220 TypeNs(Symbol),
222 ValueNs(Symbol),
224 MacroNs(Symbol),
226 LifetimeNs(Symbol),
228 Closure,
230 TestBinderConstraints,
231
232 Ctor,
235 AnonConst,
237 OpaqueTy,
240 OpaqueLifetime(Symbol),
242 AnonAssocTy(Symbol),
245 SyntheticCoroutineBody,
247 NestedStatic,
249}
250
251impl Definitions {
252 #[inline(always)]
253 pub fn def_key(&self, id: LocalDefId) -> DefKey {
254 self.def_id_to_key[id]
255 }
256
257 {}
let __tracing_attr_span;
let __tracing_attr_guard;
if ::tracing::Level::TRACE <= ::tracing::level_filters::STATIC_MAX_LEVEL &&
::tracing::Level::TRACE <=
::tracing::level_filters::LevelFilter::current() || { false }
{
__tracing_attr_span =
{
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("def_path_hash",
"rustc_hir_id::definitions", ::tracing::Level::TRACE,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(259u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&[{
const NAME:
::tracing::__macro_support::FieldName<{
::tracing::__macro_support::FieldName::len("def_index")
}> =
::tracing::__macro_support::FieldName::new("def_index");
NAME.as_str()
}], ::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::SPAN)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let mut interest = ::tracing::subscriber::Interest::never();
if ::tracing::Level::TRACE <=
::tracing::level_filters::STATIC_MAX_LEVEL &&
::tracing::Level::TRACE <=
::tracing::level_filters::LevelFilter::current() &&
{ interest = __CALLSITE.interest(); !interest.is_never() }
&&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest) {
let meta = __CALLSITE.metadata();
::tracing::Span::new(meta,
&{
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
meta.fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&::tracing::field::debug(&id.local_def_index)
as &dyn ::tracing::field::Value))])
})
} else {
let span =
::tracing::__macro_support::__disabled_span(__CALLSITE.metadata());
{};
span
}
};
__tracing_attr_guard = __tracing_attr_span.enter();
}
#[allow(clippy :: redundant_closure_call)]
let x =
(move ||
{
#[allow(unknown_lints, unreachable_code, clippy ::
diverging_sub_expression, clippy :: empty_loop, clippy ::
let_unit_value, clippy :: let_with_type_underscore, clippy
:: needless_return, clippy :: unreachable)]
if false {
let __tracing_attr_fake_return: DefPathHash = loop {};
return __tracing_attr_fake_return;
}
{
DefPathHash::new(self.stable_crate_id,
self.def_path_hashes[id])
}
})();
{
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event /rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs:259",
"rustc_hir_id::definitions", ::tracing::Level::TRACE,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(259u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&[{
const NAME:
::tracing::__macro_support::FieldName<{
::tracing::__macro_support::FieldName::len("return")
}> =
::tracing::__macro_support::FieldName::new("return");
NAME.as_str()
}], ::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::TRACE <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::TRACE <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
__CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&::tracing::field::debug(&x)
as &dyn ::tracing::field::Value))])
});
} else { ; }
};
x;#[instrument(level = "trace", skip(self, id), fields(def_index=?id.local_def_index), ret)]
260 #[inline(always)]
261 pub fn def_path_hash(&self, id: LocalDefId) -> DefPathHash {
262 DefPathHash::new(self.stable_crate_id, self.def_path_hashes[id])
263 }
264
265 #[inline]
271 pub fn def_path(&self, id: LocalDefId) -> DefPath {
272 DefPath::make(LOCAL_CRATE, id.local_def_index, |index| {
273 self.def_key(LocalDefId { local_def_index: index })
274 })
275 }
276
277 pub fn new(stable_crate_id: StableCrateId) -> Definitions {
279 let key = DefKey {
280 parent: None,
281 disambiguated_data: DisambiguatedDefPathData {
282 data: DefPathData::CrateRoot,
283 disambiguator: 0,
284 },
285 };
286
287 let def_path_hash =
296 DefPathHash::new(stable_crate_id, Hash64::new(stable_crate_id.as_u64()));
297
298 let mut defs = Definitions {
299 stable_crate_id,
300 def_path_hashes: Default::default(),
301 def_id_to_key: Default::default(),
302 def_path_hash_to_index: Default::default(),
303 };
304
305 let root = defs.allocate(key, def_path_hash);
307 {
match (&root.local_def_index, &CRATE_DEF_INDEX) {
(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);
}
}
}
};assert_eq!(root.local_def_index, CRATE_DEF_INDEX);
308
309 defs
310 }
311
312 fn allocate(&mut self, key: DefKey, def_path_hash: DefPathHash) -> LocalDefId {
313 if true {
{
match (&self.stable_crate_id, &def_path_hash.stable_crate_id()) {
(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!(self.stable_crate_id, def_path_hash.stable_crate_id());
315 let local_hash = def_path_hash.local_hash();
316
317 let def_id = self.def_id_to_key.push(key);
318 {
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event /rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs:318",
"rustc_hir_id::definitions", ::tracing::Level::DEBUG,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(318u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&["message"],
::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::DEBUG <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
__CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&format_args!("def_id_to_key.push() - {1:?} <-> {0:?}",
def_id.local_def_index, key) as
&dyn ::tracing::field::Value))])
});
} else { ; }
};debug!("def_id_to_key.push() - {key:?} <-> {:?}", def_id.local_def_index);
319
320 self.def_path_hashes.push(local_hash);
321 if true {
if !(self.def_path_hashes.len() == self.def_id_to_key.len()) {
::core::panicking::panic("assertion failed: self.def_path_hashes.len() == self.def_id_to_key.len()")
};
};debug_assert!(self.def_path_hashes.len() == self.def_id_to_key.len());
322
323 if let Some(existing) =
326 self.def_path_hash_to_index.insert(&local_hash, &def_id.local_def_index)
327 {
328 let def_path1 = self.def_path(LocalDefId { local_def_index: existing });
329 let def_path2 = self.def_path(def_id);
330
331 {
::core::panicking::panic_fmt(format_args!("found DefPathHash collision between {0:#?} and {1:#?}. Compilation cannot continue.",
def_path1, def_path2));
};panic!(
340 "found DefPathHash collision between {def_path1:#?} and {def_path2:#?}. \
341 Compilation cannot continue."
342 );
343 }
344
345 def_id
346 }
347
348 pub fn enumerated_keys_and_path_hashes(
349 &self,
350 ) -> impl Iterator<Item = (DefIndex, &DefKey, DefPathHash)> + ExactSizeIterator {
351 self.def_id_to_key
352 .iter_enumerated()
353 .map(move |(def_id, key)| (def_id.local_def_index, key, self.def_path_hash(def_id)))
354 }
355
356 pub fn create_def(
362 &mut self,
363 parent: LocalDefId,
364 data: DefPathData,
365 disambiguator: &mut PerParentDisambiguatorState,
366 ) -> LocalDefId {
367 {
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event /rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs:369",
"rustc_hir_id::definitions", ::tracing::Level::DEBUG,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(369u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&["message"],
::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::DEBUG <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
__CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&format_args!("create_def(parent={0}, data={1:?})",
self.def_path(parent).to_string_no_crate_verbose(), data) as
&dyn ::tracing::field::Value))])
});
} else { ; }
};debug!(
370 "create_def(parent={}, data={data:?})",
371 self.def_path(parent).to_string_no_crate_verbose(),
372 );
373
374 if !(data != DefPathData::CrateRoot) {
::core::panicking::panic("assertion failed: data != DefPathData::CrateRoot")
};assert!(data != DefPathData::CrateRoot);
376
377 let disambiguator = {
379 #[cfg(debug_assertions)]
380 if true {
{
match (&parent, &disambiguator.parent.expect("must be set")) {
(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::Some(format_args!("provided parent and parent in disambiguator must be the same")));
}
}
}
};
};debug_assert_eq!(
381 parent,
382 disambiguator.parent.expect("must be set"),
383 "provided parent and parent in disambiguator must be the same"
384 );
385
386 let next_disamb = disambiguator.next.entry(data).or_insert(0);
387 let disambiguator = *next_disamb;
388 *next_disamb = next_disamb.checked_add(1).expect("disambiguator overflow");
389 disambiguator
390 };
391 let key = DefKey {
392 parent: Some(parent.local_def_index),
393 disambiguated_data: DisambiguatedDefPathData { data, disambiguator },
394 };
395
396 let parent_hash = self.def_path_hash(parent);
397 let def_path_hash = key.compute_stable_hash(parent_hash);
398
399 {
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event /rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs:399",
"rustc_hir_id::definitions", ::tracing::Level::DEBUG,
::tracing_core::__macro_support::Option::Some("/rustc-dev/2e2b193f8ada105f27608b7be81c293e0d7292cb/compiler/rustc_hir_id/src/definitions.rs"),
::tracing_core::__macro_support::Option::Some(399u32),
::tracing_core::__macro_support::Option::Some("rustc_hir_id::definitions"),
::tracing_core::field::FieldSet::new(&["message"],
::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::DEBUG <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
__CALLSITE.metadata().fields().value_set_all(&[(::tracing::__macro_support::Option::Some(&format_args!("create_def: after disambiguation, key = {0:?}",
key) as &dyn ::tracing::field::Value))])
});
} else { ; }
};debug!("create_def: after disambiguation, key = {:?}", key);
400
401 self.allocate(key, def_path_hash)
403 }
404
405 #[inline(always)]
406 pub fn local_def_path_hash_to_def_id(&self, hash: DefPathHash) -> Option<LocalDefId> {
412 if true {
if !(hash.stable_crate_id() == self.stable_crate_id) {
::core::panicking::panic("assertion failed: hash.stable_crate_id() == self.stable_crate_id")
};
};debug_assert!(hash.stable_crate_id() == self.stable_crate_id);
413 self.def_path_hash_to_index
414 .get(&hash.local_hash())
415 .map(|local_def_index| LocalDefId { local_def_index })
416 }
417
418 pub fn def_path_hash_to_def_index_map(&self) -> &DefPathHashMap {
419 &self.def_path_hash_to_index
420 }
421
422 pub fn num_definitions(&self) -> usize {
423 self.def_path_hashes.len()
424 }
425}
426
427#[derive(#[automatically_derived]
impl ::core::marker::Copy for DefPathDataName { }Copy, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for DefPathDataName { }
#[automatically_derived]
impl ::core::clone::Clone for DefPathDataName {
#[inline]
fn clone(&self) -> DefPathDataName {
let _: ::core::clone::AssertParamIsClone<Symbol>;
*self
}
}Clone, #[automatically_derived]
impl ::core::marker::StructuralPartialEq for DefPathDataName { }
#[automatically_derived]
impl ::core::cmp::PartialEq for DefPathDataName {
#[inline]
fn eq(&self, other: &DefPathDataName) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(DefPathDataName::Named(__self_0),
DefPathDataName::Named(__arg1_0)) => __self_0 == __arg1_0,
(DefPathDataName::Anon { namespace: __self_0 },
DefPathDataName::Anon { namespace: __arg1_0 }) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
impl ::core::fmt::Debug for DefPathDataName {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
DefPathDataName::Named(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "Named",
&__self_0),
DefPathDataName::Anon { namespace: __self_0 } =>
::core::fmt::Formatter::debug_struct_field1_finish(f, "Anon",
"namespace", &__self_0),
}
}
}Debug)]
428pub enum DefPathDataName {
429 Named(Symbol),
430 Anon { namespace: Symbol },
431}
432
433impl DefPathData {
434 pub fn get_opt_name(&self) -> Option<Symbol> {
435 use self::DefPathData::*;
436 match *self {
437 TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name)
438 | OpaqueLifetime(name) => Some(name),
439
440 Impl
441 | ForeignMod
442 | CrateRoot
443 | Use
444 | GlobalAsm
445 | Closure
446 | Ctor
447 | AnonConst
448 | OpaqueTy
449 | AnonAssocTy(..)
450 | SyntheticCoroutineBody
451 | NestedStatic
452 | TestBinderConstraints => None,
453 }
454 }
455
456 fn hashed_symbol(&self) -> Option<Symbol> {
457 use self::DefPathData::*;
458 match *self {
459 TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name) | AnonAssocTy(name)
460 | OpaqueLifetime(name) => Some(name),
461
462 Impl
463 | ForeignMod
464 | CrateRoot
465 | Use
466 | GlobalAsm
467 | Closure
468 | Ctor
469 | AnonConst
470 | OpaqueTy
471 | SyntheticCoroutineBody
472 | NestedStatic
473 | TestBinderConstraints => None,
474 }
475 }
476
477 pub fn name(&self) -> DefPathDataName {
478 use self::DefPathData::*;
479 match *self {
480 TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name)
481 | OpaqueLifetime(name) => DefPathDataName::Named(name),
482 CrateRoot => DefPathDataName::Anon { namespace: kw::Crate },
484 Impl => DefPathDataName::Anon { namespace: kw::Impl },
485 ForeignMod => DefPathDataName::Anon { namespace: kw::Extern },
486 Use => DefPathDataName::Anon { namespace: kw::Use },
487 GlobalAsm => DefPathDataName::Anon { namespace: sym::global_asm },
488 Closure => DefPathDataName::Anon { namespace: sym::closure },
489 Ctor => DefPathDataName::Anon { namespace: sym::constructor },
490 AnonConst => DefPathDataName::Anon { namespace: sym::constant },
491 OpaqueTy => DefPathDataName::Anon { namespace: sym::opaque },
492 AnonAssocTy(..) => DefPathDataName::Anon { namespace: sym::anon_assoc },
493 SyntheticCoroutineBody => DefPathDataName::Anon { namespace: sym::synthetic },
494 NestedStatic => DefPathDataName::Anon { namespace: sym::nested },
495 TestBinderConstraints => {
496 DefPathDataName::Anon { namespace: sym::test_binder_constraints }
497 }
498 }
499 }
500}
501
502impl fmt::Display for DefPathData {
503 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
504 match self.name() {
505 DefPathDataName::Named(name) => f.write_str(name.as_str()),
506 DefPathDataName::Anon { namespace } => f.write_fmt(format_args!("{{{{{0}}}}}", namespace))write!(f, "{{{{{namespace}}}}}"),
508 }
509 }
510}