let id = from_chalk(self.db, trait_id);
self.db.trait_data(id).name.to_string()
}
- // FIXME: lookup names
- fn adt_name(&self, struct_id: chalk_ir::AdtId<Interner>) -> String {
- let datum = self.db.struct_datum(self.krate, struct_id);
- format!("{:?}", datum.name(&Interner))
+ fn adt_name(&self, adt_id: chalk_ir::AdtId<Interner>) -> String {
+ let id = from_chalk(self.db, adt_id);
+ match id {
+ 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 {
- 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 {
format!("Opaque_{}", opaque_ty_id.0)
}
}
+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 {
type Chalk = FnDefId;