Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 29729ab

Browse files
committed
Retain imports on find-all-references
1 parent 8ddb8b7 commit 29729ab

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

crates/ide/src/references.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ pub(crate) fn find_all_refs(
7979
retain_adt_literal_usages(&mut usages, def, sema);
8080
}
8181

82+
retain_import_usages(&mut usages, sema);
83+
8284
let references = usages
8385
.into_iter()
8486
.map(|(file_id, refs)| {
@@ -112,6 +114,32 @@ pub(crate) fn find_all_refs(
112114
}
113115
}
114116

117+
fn retain_import_usages(usages: &mut UsageSearchResult, sema: &Semantics<'_, RootDatabase>) {
118+
for (file_id, refs) in &mut usages.references {
119+
refs.retain(|x| {
120+
let file_sema = sema.parse(file_id.clone()).syntax().clone();
121+
122+
let maybe_node = file_sema.child_or_token_at_range(x.range.clone());
123+
124+
if let Some(node) = maybe_node {
125+
let res = match node {
126+
syntax::NodeOrToken::Node(x) => {
127+
if matches!(x.kind(), USE) {
128+
false
129+
} else {
130+
true
131+
}
132+
}
133+
syntax::NodeOrToken::Token(_) => true,
134+
};
135+
res
136+
} else {
137+
true
138+
}
139+
});
140+
}
141+
}
142+
115143
pub(crate) fn find_defs<'a>(
116144
sema: &'a Semantics<'_, RootDatabase>,
117145
syntax: &SyntaxNode,

0 commit comments

Comments
 (0)