Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/display.rs')
-rw-r--r--crates/hir-ty/src/display.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs
index 128dd42f73..f62e4bb4f8 100644
--- a/crates/hir-ty/src/display.rs
+++ b/crates/hir-ty/src/display.rs
@@ -23,7 +23,8 @@ use hir_def::{
nameres::DefMap,
signatures::VariantFields,
type_ref::{
- ConstRef, LifetimeRef, TraitBoundModifier, TypeBound, TypeRef, TypeRefId, UseArgRef,
+ ConstRef, LifetimeRef, LifetimeRefId, TraitBoundModifier, TypeBound, TypeRef, TypeRefId,
+ UseArgRef,
},
visibility::Visibility,
};
@@ -2085,20 +2086,29 @@ impl<T: HirDisplayWithExpressionStore> HirDisplay for ExpressionStoreAdapter<'_,
T::hir_fmt(&self.0, f, self.1)
}
}
-impl HirDisplayWithExpressionStore for LifetimeRef {
+impl HirDisplayWithExpressionStore for LifetimeRefId {
fn hir_fmt(
&self,
f: &mut HirFormatter<'_>,
- _store: &ExpressionStore,
+ store: &ExpressionStore,
) -> Result<(), HirDisplayError> {
- match self {
+ match &store[*self] {
LifetimeRef::Named(name) => write!(f, "{}", name.display(f.db, f.edition())),
LifetimeRef::Static => write!(f, "'static"),
LifetimeRef::Placeholder => write!(f, "'_"),
LifetimeRef::Error => write!(f, "'{{error}}"),
+ &LifetimeRef::Param(lifetime_param_id) => {
+ let generic_params = f.db.generic_params(lifetime_param_id.parent);
+ write!(
+ f,
+ "{}",
+ generic_params[lifetime_param_id.local_id].name.display(f.db, f.edition())
+ )
+ }
}
}
}
+
impl HirDisplayWithExpressionStore for TypeRefId {
fn hir_fmt(
&self,