@@ -54,6 +54,7 @@ pub(crate) fn find_all_refs(
54
54
sema : & Semantics < ' _ , RootDatabase > ,
55
55
position : FilePosition ,
56
56
search_scope : Option < SearchScope > ,
57
+ exclude_imports : bool ,
57
58
) -> Option < Vec < ReferenceSearchResult > > {
58
59
let _p = profile:: span ( "find_all_refs" ) ;
59
60
let syntax = sema. parse ( position. file_id ) . syntax ( ) . clone ( ) ;
@@ -79,6 +80,10 @@ pub(crate) fn find_all_refs(
79
80
retain_adt_literal_usages ( & mut usages, def, sema) ;
80
81
}
81
82
83
+ if exclude_imports {
84
+ filter_import_references ( & mut usages) ;
85
+ }
86
+
82
87
let references = usages
83
88
. into_iter ( )
84
89
. map ( |( file_id, refs) | {
@@ -112,6 +117,17 @@ pub(crate) fn find_all_refs(
112
117
}
113
118
}
114
119
120
+ fn filter_import_references ( usages : & mut UsageSearchResult ) {
121
+ for ( _file_id, refs) in & mut usages. references {
122
+ refs. retain ( |it| match it. name . as_name_ref ( ) {
123
+ Some ( name_ref) => {
124
+ !name_ref. syntax ( ) . ancestors ( ) . any ( |it_ref| matches ! ( it_ref. kind( ) , USE ) )
125
+ }
126
+ None => true ,
127
+ } ) ;
128
+ }
129
+ }
130
+
115
131
pub ( crate ) fn find_defs < ' a > (
116
132
sema : & ' a Semantics < ' _ , RootDatabase > ,
117
133
syntax : & SyntaxNode ,
@@ -1094,7 +1110,7 @@ impl Foo {
1094
1110
1095
1111
fn check_with_scope ( ra_fixture : & str , search_scope : Option < SearchScope > , expect : Expect ) {
1096
1112
let ( analysis, pos) = fixture:: position ( ra_fixture) ;
1097
- let refs = analysis. find_all_refs ( pos, search_scope) . unwrap ( ) . unwrap ( ) ;
1113
+ let refs = analysis. find_all_refs ( pos, search_scope, false ) . unwrap ( ) . unwrap ( ) ;
1098
1114
1099
1115
let mut actual = String :: new ( ) ;
1100
1116
for refs in refs {
0 commit comments