Skip to content

Commit a852758

Browse files
bors[bot]Veykril
andauthored
Merge #11912
11912: Fix `SearchScope::reverse_dependencies` trying to search more files than necessary r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
2 parents fa06e3d + 4e6390b commit a852758

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

crates/ide_db/src/search.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,18 @@ impl SearchScope {
102102
/// Build a search scope spanning all the reverse dependencies of the given crate.
103103
fn reverse_dependencies(db: &RootDatabase, of: hir::Crate) -> SearchScope {
104104
let mut entries = FxHashMap::default();
105-
for rev_dep in of.transitive_reverse_dependencies(db) {
106-
let root_file = rev_dep.root_file(db);
107-
let source_root_id = db.file_source_root(root_file);
108-
let source_root = db.source_root(source_root_id);
109-
entries.extend(source_root.iter().map(|id| (id, None)));
110-
}
105+
let mut insert_modules = |of: hir::Crate| {
106+
entries.extend(of.modules(db).into_iter().filter_map(|module| {
107+
match module.definition_source(db) {
108+
InFile { file_id, value: ModuleSource::SourceFile(..) } => {
109+
Some((file_id.original_file(db), None))
110+
}
111+
_ => None,
112+
}
113+
}));
114+
};
115+
insert_modules(of);
116+
of.transitive_reverse_dependencies(db).into_iter().for_each(insert_modules);
111117
SearchScope { entries }
112118
}
113119

0 commit comments

Comments
 (0)