Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tls.rs')
| -rw-r--r-- | crates/hir-ty/src/tls.rs | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/crates/hir-ty/src/tls.rs b/crates/hir-ty/src/tls.rs index 6cb59491fa..f5911e2161 100644 --- a/crates/hir-ty/src/tls.rs +++ b/crates/hir-ty/src/tls.rs @@ -5,8 +5,8 @@ use itertools::Itertools; use span::Edition; use crate::{ - chalk_db, db::HirDatabase, from_assoc_type_id, from_chalk_trait_id, mapping::from_chalk, - CallableDefId, Interner, ProjectionTyExt, + CallableDefId, Interner, ProjectionTyExt, chalk_db, db::HirDatabase, from_assoc_type_id, + from_chalk_trait_id, mapping::from_chalk, }; use hir_def::{AdtId, ItemContainerId, Lookup, TypeAliasId}; @@ -21,11 +21,11 @@ impl DebugContext<'_> { f: &mut fmt::Formatter<'_>, ) -> Result<(), fmt::Error> { let name = match id.0 { - AdtId::StructId(it) => self.0.struct_data(it).name.clone(), - AdtId::UnionId(it) => self.0.union_data(it).name.clone(), - AdtId::EnumId(it) => self.0.enum_data(it).name.clone(), + AdtId::StructId(it) => self.0.struct_signature(it).name.clone(), + AdtId::UnionId(it) => self.0.union_signature(it).name.clone(), + AdtId::EnumId(it) => self.0.enum_signature(it).name.clone(), }; - name.display(self.0.upcast(), Edition::LATEST).fmt(f)?; + name.display(self.0, Edition::LATEST).fmt(f)?; Ok(()) } @@ -35,8 +35,8 @@ impl DebugContext<'_> { f: &mut fmt::Formatter<'_>, ) -> Result<(), fmt::Error> { let trait_: hir_def::TraitId = from_chalk_trait_id(id); - let trait_data = self.0.trait_data(trait_); - trait_data.name.display(self.0.upcast(), Edition::LATEST).fmt(f)?; + let trait_data = self.0.trait_signature(trait_); + trait_data.name.display(self.0, Edition::LATEST).fmt(f)?; Ok(()) } @@ -46,17 +46,17 @@ impl DebugContext<'_> { fmt: &mut fmt::Formatter<'_>, ) -> Result<(), fmt::Error> { let type_alias: TypeAliasId = from_assoc_type_id(id); - let type_alias_data = self.0.type_alias_data(type_alias); - let trait_ = match type_alias.lookup(self.0.upcast()).container { + let type_alias_data = self.0.type_alias_signature(type_alias); + let trait_ = match type_alias.lookup(self.0).container { ItemContainerId::TraitId(t) => t, _ => panic!("associated type not in trait"), }; - let trait_data = self.0.trait_data(trait_); + let trait_data = self.0.trait_signature(trait_); write!( fmt, "{}::{}", - trait_data.name.display(self.0.upcast(), Edition::LATEST), - type_alias_data.name.display(self.0.upcast(), Edition::LATEST) + trait_data.name.display(self.0, Edition::LATEST), + type_alias_data.name.display(self.0, Edition::LATEST) )?; Ok(()) } @@ -67,16 +67,16 @@ impl DebugContext<'_> { fmt: &mut fmt::Formatter<'_>, ) -> Result<(), fmt::Error> { let type_alias = from_assoc_type_id(projection_ty.associated_ty_id); - let type_alias_data = self.0.type_alias_data(type_alias); - let trait_ = match type_alias.lookup(self.0.upcast()).container { + let type_alias_data = self.0.type_alias_signature(type_alias); + let trait_ = match type_alias.lookup(self.0).container { ItemContainerId::TraitId(t) => t, _ => panic!("associated type not in trait"), }; - let trait_name = &self.0.trait_data(trait_).name; + let trait_name = &self.0.trait_signature(trait_).name; let trait_ref = projection_ty.trait_ref(self.0); let trait_params = trait_ref.substitution.as_slice(Interner); let self_ty = trait_ref.self_type_parameter(Interner); - write!(fmt, "<{self_ty:?} as {}", trait_name.display(self.0.upcast(), Edition::LATEST))?; + write!(fmt, "<{self_ty:?} as {}", trait_name.display(self.0, Edition::LATEST))?; if trait_params.len() > 1 { write!( fmt, @@ -84,10 +84,9 @@ impl DebugContext<'_> { trait_params[1..].iter().format_with(", ", |x, f| f(&format_args!("{x:?}"))), )?; } - write!(fmt, ">::{}", type_alias_data.name.display(self.0.upcast(), Edition::LATEST))?; + write!(fmt, ">::{}", type_alias_data.name.display(self.0, Edition::LATEST))?; - let proj_params_count = projection_ty.substitution.len(Interner) - trait_params.len(); - let proj_params = &projection_ty.substitution.as_slice(Interner)[..proj_params_count]; + let proj_params = &projection_ty.substitution.as_slice(Interner)[trait_params.len()..]; if !proj_params.is_empty() { write!( fmt, @@ -106,16 +105,19 @@ impl DebugContext<'_> { ) -> Result<(), fmt::Error> { let def: CallableDefId = from_chalk(self.0, fn_def_id); let name = match def { - CallableDefId::FunctionId(ff) => self.0.function_data(ff).name.clone(), - CallableDefId::StructId(s) => self.0.struct_data(s).name.clone(), - CallableDefId::EnumVariantId(e) => self.0.enum_variant_data(e).name.clone(), + CallableDefId::FunctionId(ff) => self.0.function_signature(ff).name.clone(), + CallableDefId::StructId(s) => self.0.struct_signature(s).name.clone(), + CallableDefId::EnumVariantId(e) => { + let loc = e.lookup(self.0); + self.0.enum_variants(loc.parent).variants[loc.index as usize].1.clone() + } }; match def { CallableDefId::FunctionId(_) => { - write!(fmt, "{{fn {}}}", name.display(self.0.upcast(), Edition::LATEST)) + write!(fmt, "{{fn {}}}", name.display(self.0, Edition::LATEST)) } CallableDefId::StructId(_) | CallableDefId::EnumVariantId(_) => { - write!(fmt, "{{ctor {}}}", name.display(self.0.upcast(), Edition::LATEST)) + write!(fmt, "{{ctor {}}}", name.display(self.0, Edition::LATEST)) } } } @@ -131,11 +133,7 @@ mod unsafe_tls { pub(crate) fn with_current_program<R>( op: impl for<'a> FnOnce(Option<&'a DebugContext<'a>>) -> R, ) -> R { - if PROGRAM.is_set() { - PROGRAM.with(|prog| op(Some(prog))) - } else { - op(None) - } + if PROGRAM.is_set() { PROGRAM.with(|prog| op(Some(prog))) } else { op(None) } } pub(crate) fn set_current_program<OP, R>(p: &dyn HirDatabase, op: OP) -> R |