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.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/crates/hir-ty/src/display.rs b/crates/hir-ty/src/display.rs
index 44bbd84003..4f9406908f 100644
--- a/crates/hir-ty/src/display.rs
+++ b/crates/hir-ty/src/display.rs
@@ -10,7 +10,8 @@ use std::{
use base_db::{Crate, FxIndexMap};
use either::Either;
use hir_def::{
- FindPathConfig, GenericDefId, HasModule, LocalFieldId, Lookup, ModuleDefId, ModuleId, TraitId,
+ FindPathConfig, GenericDefId, GenericParamId, HasModule, LocalFieldId, Lookup, ModuleDefId,
+ ModuleId, TraitId,
db::DefDatabase,
expr_store::{ExpressionStore, path::Path},
find_path::{self, PrefixKind},
@@ -66,6 +67,7 @@ pub type Result<T = (), E = HirDisplayError> = std::result::Result<T, E>;
pub trait HirWrite: fmt::Write {
fn start_location_link(&mut self, _location: ModuleDefId) {}
+ fn start_location_link_generic(&mut self, _location: GenericParamId) {}
fn end_location_link(&mut self) {}
}
@@ -147,6 +149,10 @@ impl<'db> HirFormatter<'_, 'db> {
self.fmt.start_location_link(location);
}
+ pub fn start_location_link_generic(&mut self, location: GenericParamId) {
+ self.fmt.start_location_link_generic(location);
+ }
+
pub fn end_location_link(&mut self) {
self.fmt.end_location_link();
}
@@ -1489,6 +1495,7 @@ impl<'db> HirDisplay<'db> for Ty<'db> {
match param_data {
TypeOrConstParamData::TypeParamData(p) => match p.provenance {
TypeParamProvenance::TypeParamList | TypeParamProvenance::TraitSelf => {
+ f.start_location_link_generic(param.id.into());
write!(
f,
"{}",
@@ -1496,7 +1503,8 @@ impl<'db> HirDisplay<'db> for Ty<'db> {
.clone()
.unwrap_or_else(Name::missing)
.display(f.db, f.edition())
- )?
+ )?;
+ f.end_location_link();
}
TypeParamProvenance::ArgumentImplTrait => {
let bounds = GenericPredicates::query_all(f.db, param.id.parent())
@@ -1519,7 +1527,9 @@ impl<'db> HirDisplay<'db> for Ty<'db> {
}
},
TypeOrConstParamData::ConstParamData(p) => {
+ f.start_location_link_generic(param.id.into());
write!(f, "{}", p.name.display(f.db, f.edition()))?;
+ f.end_location_link();
}
}
}