Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_db/src/rename.rs')
-rw-r--r--crates/ide_db/src/rename.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/crates/ide_db/src/rename.rs b/crates/ide_db/src/rename.rs
index 404e17c022..970ca2b6d7 100644
--- a/crates/ide_db/src/rename.rs
+++ b/crates/ide_db/src/rename.rs
@@ -124,20 +124,23 @@ impl Definition {
src.with_value(name.syntax()).original_file_range_opt(sema.db)
}
Definition::GenericParam(generic_param) => match generic_param {
- hir::GenericParam::TypeParam(type_param) => {
- let src = type_param.source(sema.db)?;
+ hir::GenericParam::LifetimeParam(lifetime_param) => {
+ let src = lifetime_param.source(sema.db)?;
+ src.with_value(src.value.lifetime()?.syntax()).original_file_range_opt(sema.db)
+ }
+ _ => {
+ let x = match generic_param {
+ hir::GenericParam::TypeParam(it) => it.merge(),
+ hir::GenericParam::ConstParam(it) => it.merge(),
+ hir::GenericParam::LifetimeParam(_) => return None,
+ };
+ let src = x.source(sema.db)?;
let name = match &src.value {
- Either::Left(type_param) => type_param.name()?,
- Either::Right(_trait) => return None,
+ Either::Left(x) => x.name()?,
+ Either::Right(_) => return None,
};
src.with_value(name.syntax()).original_file_range_opt(sema.db)
}
- hir::GenericParam::LifetimeParam(lifetime_param) => {
- let src = lifetime_param.source(sema.db)?;
- let lifetime = src.value.lifetime()?;
- src.with_value(lifetime.syntax()).original_file_range_opt(sema.db)
- }
- hir::GenericParam::ConstParam(it) => name_range(it, sema),
},
Definition::Label(label) => {
let src = label.source(sema.db);