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.rs58
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