mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 14:21:44 +00:00
Lookup ADT and assoc. type names for chalk debug
This commit is contained in:
parent
7f79dbc84f
commit
20663a2a8b
2 changed files with 21 additions and 5 deletions
|
@ -244,13 +244,17 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
|
||||||
let id = from_chalk(self.db, trait_id);
|
let id = from_chalk(self.db, trait_id);
|
||||||
self.db.trait_data(id).name.to_string()
|
self.db.trait_data(id).name.to_string()
|
||||||
}
|
}
|
||||||
// FIXME: lookup names
|
fn adt_name(&self, adt_id: chalk_ir::AdtId<Interner>) -> String {
|
||||||
fn adt_name(&self, struct_id: chalk_ir::AdtId<Interner>) -> String {
|
let id = from_chalk(self.db, adt_id);
|
||||||
let datum = self.db.struct_datum(self.krate, struct_id);
|
match id {
|
||||||
format!("{:?}", datum.name(&Interner))
|
hir_def::AdtId::StructId(id) => self.db.struct_data(id).name.to_string(),
|
||||||
|
hir_def::AdtId::EnumId(id) => self.db.enum_data(id).name.to_string(),
|
||||||
|
hir_def::AdtId::UnionId(id) => self.db.union_data(id).name.to_string(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fn assoc_type_name(&self, assoc_ty_id: chalk_ir::AssocTypeId<Interner>) -> String {
|
fn assoc_type_name(&self, assoc_ty_id: chalk_ir::AssocTypeId<Interner>) -> String {
|
||||||
format!("Assoc_{}", assoc_ty_id.0)
|
let id = self.db.associated_ty_data(assoc_ty_id).name;
|
||||||
|
self.db.type_alias_data(id).name.to_string()
|
||||||
}
|
}
|
||||||
fn opaque_type_name(&self, opaque_ty_id: chalk_ir::OpaqueTyId<Interner>) -> String {
|
fn opaque_type_name(&self, opaque_ty_id: chalk_ir::OpaqueTyId<Interner>) -> String {
|
||||||
format!("Opaque_{}", opaque_ty_id.0)
|
format!("Opaque_{}", opaque_ty_id.0)
|
||||||
|
|
|
@ -464,6 +464,18 @@ impl ToChalk for hir_def::ImplId {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ToChalk for hir_def::AdtId {
|
||||||
|
type Chalk = AdtId;
|
||||||
|
|
||||||
|
fn to_chalk(self, _db: &dyn HirDatabase) -> Self::Chalk {
|
||||||
|
chalk_ir::AdtId(self.into())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from_chalk(_db: &dyn HirDatabase, id: AdtId) -> Self {
|
||||||
|
id.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ToChalk for CallableDefId {
|
impl ToChalk for CallableDefId {
|
||||||
type Chalk = FnDefId;
|
type Chalk = FnDefId;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue