about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/rust-analyzer/crates/ide-db/src/search.rs9
-rw-r--r--src/tools/rust-analyzer/crates/ide/src/references.rs10
2 files changed, 19 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-db/src/search.rs b/src/tools/rust-analyzer/crates/ide-db/src/search.rs
index 494ff82490b..c807a5940d1 100644
--- a/src/tools/rust-analyzer/crates/ide-db/src/search.rs
+++ b/src/tools/rust-analyzer/crates/ide-db/src/search.rs
@@ -629,6 +629,7 @@ impl<'a> FindUsages<'a> {
                                     alias.syntax().text_range(),
                                 )) {
                                     tracing::debug!("found alias: {alias}");
+                                    cov_mark::hit!(container_use_rename);
                                     // FIXME: `use`s have no easy way to determine their search scope, but they are rare.
                                     to_process.push((
                                         alias.text().to_smolstr(),
@@ -644,12 +645,15 @@ impl<'a> FindUsages<'a> {
                                         name.syntax().text_range(),
                                     )) {
                                         if let Some(def) = is_alias(&alias) {
+                                            cov_mark::hit!(container_type_alias);
                                             insert_type_alias(
                                                 sema.db,
                                                 &mut to_process,
                                                 name.text().as_str(),
                                                 def.into(),
                                             );
+                                        } else {
+                                            cov_mark::hit!(same_name_different_def_type_alias);
                                         }
                                     }
                                 }
@@ -706,12 +710,15 @@ impl<'a> FindUsages<'a> {
                                         name.syntax().text_range(),
                                     )) {
                                         if let Some(def) = is_alias(&type_alias) {
+                                            cov_mark::hit!(self_type_alias);
                                             insert_type_alias(
                                                 sema.db,
                                                 &mut to_process,
                                                 name.text().as_str(),
                                                 def.into(),
                                             );
+                                        } else {
+                                            cov_mark::hit!(same_name_different_def_type_alias);
                                         }
                                     }
                                 }
@@ -793,6 +800,8 @@ impl<'a> FindUsages<'a> {
             return false;
         };
 
+        cov_mark::hit!(short_associated_function_fast_search);
+
         // FIXME: If Rust ever gains the ability to `use Struct::method` we'll also need to account for free
         // functions.
         let finder = Finder::new(name.as_bytes());
diff --git a/src/tools/rust-analyzer/crates/ide/src/references.rs b/src/tools/rust-analyzer/crates/ide/src/references.rs
index 43c04b20dd7..64d717f88dd 100644
--- a/src/tools/rust-analyzer/crates/ide/src/references.rs
+++ b/src/tools/rust-analyzer/crates/ide/src/references.rs
@@ -2516,6 +2516,7 @@ fn main() {
 
     #[test]
     fn goto_ref_on_short_associated_function() {
+        cov_mark::check!(short_associated_function_fast_search);
         check(
             r#"
 struct Foo;
@@ -2541,6 +2542,9 @@ fn baz() {
 
     #[test]
     fn goto_ref_on_short_associated_function_with_aliases() {
+        cov_mark::check!(short_associated_function_fast_search);
+        cov_mark::check!(container_use_rename);
+        cov_mark::check!(container_type_alias);
         check(
             r#"
 //- /lib.rs
@@ -2589,6 +2593,8 @@ pub(in super::super) type Baz = Itself<crate::Foo>;
 
     #[test]
     fn goto_ref_on_short_associated_function_self_works() {
+        cov_mark::check!(short_associated_function_fast_search);
+        cov_mark::check!(self_type_alias);
         check(
             r#"
 //- /lib.rs
@@ -2651,6 +2657,7 @@ impl Foo {
 
     #[test]
     fn goto_ref_on_short_associated_function_no_direct_self_but_path_contains_self() {
+        cov_mark::check!(short_associated_function_fast_search);
         check(
             r#"
 struct Foo;
@@ -2684,6 +2691,8 @@ impl Foo {
     // Usages search is not 100% accurate anyway; we miss macros.
     #[test]
     fn goto_ref_on_short_associated_function_complicated_type_magic_can_confuse_our_logic() {
+        cov_mark::check!(short_associated_function_fast_search);
+        cov_mark::check!(same_name_different_def_type_alias);
         check(
             r#"
 struct Foo;
@@ -2718,6 +2727,7 @@ fn bar() {
 
     #[test]
     fn goto_ref_on_short_associated_function_same_path_mention_alias_and_self() {
+        cov_mark::check!(short_associated_function_fast_search);
         check(
             r#"
 struct Foo;