Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/def_id.rs')
-rw-r--r--crates/hir-ty/src/next_solver/def_id.rs60
1 files changed, 59 insertions, 1 deletions
diff --git a/crates/hir-ty/src/next_solver/def_id.rs b/crates/hir-ty/src/next_solver/def_id.rs
index a9c572d3f3..1ae59beca2 100644
--- a/crates/hir-ty/src/next_solver/def_id.rs
+++ b/crates/hir-ty/src/next_solver/def_id.rs
@@ -17,7 +17,7 @@ pub enum Ctor {
Enum(EnumVariantId),
}
-#[derive(Debug, PartialOrd, Ord, Clone, Copy, PartialEq, Eq, Hash, salsa::Supertype)]
+#[derive(PartialOrd, Ord, Clone, Copy, PartialEq, Eq, Hash, salsa::Supertype)]
pub enum SolverDefId {
AdtId(AdtId),
ConstId(ConstId),
@@ -32,6 +32,64 @@ pub enum SolverDefId {
Ctor(Ctor),
}
+impl std::fmt::Debug for SolverDefId {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ let interner = DbInterner::conjure();
+ let db = interner.db;
+ match *self {
+ SolverDefId::AdtId(AdtId::StructId(id)) => {
+ f.debug_tuple("AdtId").field(&db.struct_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::AdtId(AdtId::EnumId(id)) => {
+ f.debug_tuple("AdtId").field(&db.enum_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::AdtId(AdtId::UnionId(id)) => {
+ f.debug_tuple("AdtId").field(&db.union_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::ConstId(id) => f
+ .debug_tuple("ConstId")
+ .field(&db.const_signature(id).name.as_ref().map_or("_", |name| name.as_str()))
+ .finish(),
+ SolverDefId::FunctionId(id) => {
+ f.debug_tuple("FunctionId").field(&db.function_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::ImplId(id) => f.debug_tuple("ImplId").field(&id).finish(),
+ SolverDefId::StaticId(id) => {
+ f.debug_tuple("StaticId").field(&db.static_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::TraitId(id) => {
+ f.debug_tuple("TraitId").field(&db.trait_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::TypeAliasId(id) => f
+ .debug_tuple("TypeAliasId")
+ .field(&db.type_alias_signature(id).name.as_str())
+ .finish(),
+ SolverDefId::InternedClosureId(id) => {
+ f.debug_tuple("InternedClosureId").field(&id).finish()
+ }
+ SolverDefId::InternedCoroutineId(id) => {
+ f.debug_tuple("InternedCoroutineId").field(&id).finish()
+ }
+ SolverDefId::InternedOpaqueTyId(id) => {
+ f.debug_tuple("InternedOpaqueTyId").field(&id).finish()
+ }
+ SolverDefId::Ctor(Ctor::Struct(id)) => {
+ f.debug_tuple("Ctor").field(&db.struct_signature(id).name.as_str()).finish()
+ }
+ SolverDefId::Ctor(Ctor::Enum(id)) => {
+ let parent_enum = id.loc(db).parent;
+ f.debug_tuple("Ctor")
+ .field(&format_args!(
+ "\"{}::{}\"",
+ db.enum_signature(parent_enum).name.as_str(),
+ parent_enum.enum_variants(db).variant_name_by_id(id).unwrap().as_str()
+ ))
+ .finish()
+ }
+ }
+ }
+}
+
impl_from!(
AdtId(StructId, EnumId, UnionId),
ConstId,