about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStanislav <ixentrum@gmail.com>2022-09-07 03:01:06 +0300
committerGitHub <noreply@github.com>2022-09-07 03:01:06 +0300
commitbd0eeb3f041cc57dad3ac40ed6cfcc08f1055638 (patch)
treec37ab3fb1f674e340379d6f300f4edc534edc8ac
parent6001e7dfb191f68332e2daf2eec692bbc2ae244f (diff)
downloadrust-bd0eeb3f041cc57dad3ac40ed6cfcc08f1055638.tar.gz
rust-bd0eeb3f041cc57dad3ac40ed6cfcc08f1055638.zip
Update crates/ide/src/references.rs
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
-rw-r--r--crates/ide/src/references.rs17
1 files changed, 4 insertions, 13 deletions
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs
index 53a7a3a2173..d4c431f75f7 100644
--- a/crates/ide/src/references.rs
+++ b/crates/ide/src/references.rs
@@ -116,19 +116,10 @@ pub(crate) fn find_all_refs(
 
 fn retain_import_usages(usages: &mut UsageSearchResult, sema: &Semantics<'_, RootDatabase>) {
     for (file_id, refs) in &mut usages.references {
-        refs.retain(|x| {
-            let file_sema = sema.parse(file_id.clone()).syntax().clone();
-
-            let maybe_node = file_sema.child_or_token_at_range(x.range.clone());
-
-            if let Some(node) = maybe_node {
-                let res = match node {
-                    syntax::NodeOrToken::Node(x) => !matches!(x.kind(), USE),
-                    syntax::NodeOrToken::Token(_) => true,
-                };
-                res
-            } else {
-                true
+        refs.retain(|it| {
+            match if.name.as_name_ref() {
+                Some(name_ref) => name_ref.syntax().ancestors().any(|it| !matches(it.kind(), USE)),
+                None => true,
             }
         });
     }