aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ssr/src/search.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ssr/src/search.rs')
-rw-r--r--crates/ra_ssr/src/search.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/crates/ra_ssr/src/search.rs b/crates/ra_ssr/src/search.rs
index 6f21452ac..ec3addcf8 100644
--- a/crates/ra_ssr/src/search.rs
+++ b/crates/ra_ssr/src/search.rs
@@ -5,7 +5,26 @@ use ra_db::FileRange;
5use ra_syntax::{ast, AstNode, SyntaxNode}; 5use ra_syntax::{ast, AstNode, SyntaxNode};
6 6
7impl<'db> MatchFinder<'db> { 7impl<'db> MatchFinder<'db> {
8 pub(crate) fn slow_scan_node( 8 pub(crate) fn find_all_matches(&self, matches_out: &mut Vec<Match>) {
9 // FIXME: Use resolved paths in the pattern to find places to search instead of always
10 // scanning every node.
11 self.slow_scan(matches_out);
12 }
13
14 fn slow_scan(&self, matches_out: &mut Vec<Match>) {
15 use ra_db::SourceDatabaseExt;
16 use ra_ide_db::symbol_index::SymbolsDatabase;
17 for &root in self.sema.db.local_roots().iter() {
18 let sr = self.sema.db.source_root(root);
19 for file_id in sr.iter() {
20 let file = self.sema.parse(file_id);
21 let code = file.syntax();
22 self.slow_scan_node(code, &None, matches_out);
23 }
24 }
25 }
26
27 fn slow_scan_node(
9 &self, 28 &self,
10 code: &SyntaxNode, 29 code: &SyntaxNode,
11 restrict_range: &Option<FileRange>, 30 restrict_range: &Option<FileRange>,