]> git.lizzy.rs Git - rust.git/commitdiff
Fix focus range for TypeParam
authorAleksey Kladov <aleksey.kladov@gmail.com>
Mon, 4 May 2020 10:20:38 +0000 (12:20 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Mon, 4 May 2020 10:25:32 +0000 (12:25 +0200)
closes #4274

crates/ra_ide/src/display/navigation_target.rs
crates/ra_ide/src/goto_definition.rs

index 914a8b471e3f84bcb9484fd15fffdf1d7f1aa43a..de35c671141c4f0abdd2bb47fb99f0ff55f34355 100644 (file)
@@ -376,16 +376,20 @@ fn to_nav(&self, db: &RootDatabase) -> NavigationTarget {
 impl ToNav for hir::TypeParam {
     fn to_nav(&self, db: &RootDatabase) -> NavigationTarget {
         let src = self.source(db);
-        let range = match src.value {
+        let full_range = match &src.value {
             Either::Left(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 {
             file_id: src.file_id.original_file(db),
             name: self.name(db).to_string().into(),
             kind: TYPE_PARAM,
-            full_range: range,
-            focus_range: None,
+            full_range,
+            focus_range,
             container_name: None,
             description: None,
             docs: None,
index 1dfca819d5672657ed8c70aa561f99a0720c56bc..dbb4f38c70892b6b90b8c86bb1b808cfce1d7c32 100644 (file)
@@ -754,14 +754,14 @@ fn test() {
     #[test]
     fn goto_for_type_param() {
         check_goto(
-            "
+            r#"
             //- /lib.rs
-            struct Foo<T> {
+            struct Foo<T: Clone> {
                 t: <|>T,
             }
-            ",
-            "T TYPE_PARAM FileId(1) 11..12",
-            "T",
+            "#,
+            "T TYPE_PARAM FileId(1) 11..19 11..12",
+            "T: Clone|T",
         );
     }