about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStanislav <enomado@users.noreply.github.com>2022-09-07 03:23:21 +0300
committerStanislav <enomado@users.noreply.github.com>2022-09-07 03:24:55 +0300
commit92d54f9b304092f20645d8ef0d54d7b724810428 (patch)
tree127f664a3d0733523aa309c8c6bb0355b2d1107d
parentbd0eeb3f041cc57dad3ac40ed6cfcc08f1055638 (diff)
downloadrust-92d54f9b304092f20645d8ef0d54d7b724810428.tar.gz
rust-92d54f9b304092f20645d8ef0d54d7b724810428.zip
typo and draft
-rw-r--r--crates/ide/src/references.rs26
1 files changed, 23 insertions, 3 deletions
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs
index d4c431f75f7..e495bfee556 100644
--- a/crates/ide/src/references.rs
+++ b/crates/ide/src/references.rs
@@ -115,12 +115,32 @@ pub(crate) fn find_all_refs(
 }
 
 fn retain_import_usages(usages: &mut UsageSearchResult, sema: &Semantics<'_, RootDatabase>) {
-    for (file_id, refs) in &mut usages.references {
+    // todo use this https://github.com/rust-lang/rust-analyzer/blob/master/crates/rust-analyzer/src/config.rs#L432
+
+    for (_file_id, refs) in &mut usages.references {
         refs.retain(|it| {
-            match if.name.as_name_ref() {
-                Some(name_ref) => name_ref.syntax().ancestors().any(|it| !matches(it.kind(), USE)),
+            match it.name.as_name_ref() {
+                Some(name_ref) => name_ref.syntax().ancestors().any(|it_ref| {
+                    dbg!(&it_ref);
+                    !matches!(it_ref.kind(), USE)
+                }),
                 None => true,
             }
+
+            // this works:
+            // let file_sema = sema.parse(file_id.clone()).syntax().clone();
+
+            // let maybe_node = file_sema.child_or_token_at_range(it.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
+            // }
         });
     }
 }