Fix focus range for TypeParam

closes #4274
This commit is contained in:
Aleksey Kladov 2020-05-04 12:20:38 +02:00
parent 13bce1a164
commit 710e430dbb
2 changed files with 12 additions and 8 deletions

View File

@ -376,16 +376,20 @@ impl ToNav for hir::Local {
impl ToNav for hir::TypeParam { impl ToNav for hir::TypeParam {
fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { fn to_nav(&self, db: &RootDatabase) -> NavigationTarget {
let src = self.source(db); let src = self.source(db);
let range = match src.value { let full_range = match &src.value {
Either::Left(it) => it.syntax().text_range(), Either::Left(it) => it.syntax().text_range(),
Either::Right(it) => it.syntax().text_range(), Either::Right(it) => it.syntax().text_range(),
}; };
let focus_range = match &src.value {
Either::Left(_) => None,
Either::Right(it) => it.name().map(|it| it.syntax().text_range()),
};
NavigationTarget { NavigationTarget {
file_id: src.file_id.original_file(db), file_id: src.file_id.original_file(db),
name: self.name(db).to_string().into(), name: self.name(db).to_string().into(),
kind: TYPE_PARAM, kind: TYPE_PARAM,
full_range: range, full_range,
focus_range: None, focus_range,
container_name: None, container_name: None,
description: None, description: None,
docs: None, docs: None,

View File

@ -754,14 +754,14 @@ mod tests {
#[test] #[test]
fn goto_for_type_param() { fn goto_for_type_param() {
check_goto( check_goto(
" r#"
//- /lib.rs //- /lib.rs
struct Foo<T> { struct Foo<T: Clone> {
t: <|>T, t: <|>T,
} }
", "#,
"T TYPE_PARAM FileId(1) 11..12", "T TYPE_PARAM FileId(1) 11..19 11..12",
"T", "T: Clone|T",
); );
} }