]> git.lizzy.rs Git - rust.git/commitdiff
Lookup ADT and assoc. type names for chalk debug
authorNathan Whitaker <nathan.whitaker01@gmail.com>
Wed, 9 Sep 2020 16:55:05 +0000 (12:55 -0400)
committerNathan Whitaker <nathan.whitaker01@gmail.com>
Wed, 9 Sep 2020 16:55:05 +0000 (12:55 -0400)
crates/hir_ty/src/traits/chalk.rs
crates/hir_ty/src/traits/chalk/mapping.rs

index 17c83b6a46e45ec14e2f74aa33a518e4ac20c161..01b5717a3ffef169a44a2f2f66ca2882c10583ee 100644 (file)
@@ -244,13 +244,17 @@ fn trait_name(&self, trait_id: chalk_ir::TraitId<Interner>) -> String {
         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)
index fe62f3fa7cd955e2c19a41f45923c5a363c4296f..d6bacba1d3d5fda0a352a8065ac1ea5dd358ab80 100644 (file)
@@ -464,6 +464,18 @@ fn from_chalk(_db: &dyn HirDatabase, impl_id: ImplId) -> 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 {
     type Chalk = FnDefId;