From 27445a06a78b13e344d21d11ee21851465dc4d55 Mon Sep 17 00:00:00 2001 From: Wilco Kusee Date: Thu, 16 Apr 2020 20:07:54 +0200 Subject: [PATCH] Show name in opaque type debug output --- chalk-integration/src/lowering.rs | 1 + chalk-integration/src/program.rs | 9 ++++++--- chalk-ir/src/debug.rs | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/chalk-integration/src/lowering.rs b/chalk-integration/src/lowering.rs index 02e4d782a3b..9fb842109a4 100644 --- a/chalk-integration/src/lowering.rs +++ b/chalk-integration/src/lowering.rs @@ -446,6 +446,7 @@ impl LowerProgram for Program { associated_ty_values, associated_ty_data, opaque_ty_ids, + opaque_ty_kinds, opaque_ty_data, custom_clauses, }; diff --git a/chalk-integration/src/program.rs b/chalk-integration/src/program.rs index 55d62709acd..86389985b74 100644 --- a/chalk-integration/src/program.rs +++ b/chalk-integration/src/program.rs @@ -45,6 +45,9 @@ pub struct Program { // From opaque type name to item-id. Used during lowering only. pub opaque_ty_ids: BTreeMap>, + /// For each opaque type: + pub opaque_ty_kinds: BTreeMap, TypeKind>, + /// For each opaque type: pub opaque_ty_data: BTreeMap, Arc>>, @@ -120,8 +123,8 @@ impl tls::DebugContext for Program { opaque_ty_id: OpaqueTyId, fmt: &mut fmt::Formatter<'_>, ) -> Result<(), fmt::Error> { - if let Some(d) = self.opaque_ty_data.get(&opaque_ty_id) { - write!(fmt, "{:?}", d.bound.skip_binders().hidden_ty) + if let Some(k) = self.opaque_ty_kinds.get(&opaque_ty_id) { + write!(fmt, "{}", k.name) } else { fmt.debug_struct("InvalidItemId") .field("index", &opaque_ty_id.0) @@ -162,7 +165,7 @@ impl tls::DebugContext for Program { opaque_ty: &OpaqueTy, fmt: &mut fmt::Formatter<'_>, ) -> Result<(), fmt::Error> { - write!(fmt, "impl {:?}", opaque_ty.opaque_ty_id) + write!(fmt, "{:?}", opaque_ty.opaque_ty_id) } fn debug_ty(&self, ty: &Ty, fmt: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> { diff --git a/chalk-ir/src/debug.rs b/chalk-ir/src/debug.rs index bcb6c7630b7..69dc38b10e1 100644 --- a/chalk-ir/src/debug.rs +++ b/chalk-ir/src/debug.rs @@ -141,7 +141,7 @@ impl Debug for TypeName { match self { TypeName::Struct(id) => write!(fmt, "{:?}", id), TypeName::AssociatedType(assoc_ty) => write!(fmt, "{:?}", assoc_ty), - TypeName::OpaqueType(opaque_ty) => write!(fmt, "{:?}", opaque_ty), + TypeName::OpaqueType(opaque_ty) => write!(fmt, "!{:?}", opaque_ty), TypeName::Error => write!(fmt, "{{error}}"), } }