aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-03-23 09:49:55 +0000
committerAleksey Kladov <[email protected]>2021-03-23 09:49:55 +0000
commit45a8f37b6ae230db6c30c013f17d8aebac98a5e1 (patch)
treeddd1d23321319816f932551c0d8b0c42e590e40b /crates/hir/src
parent4b997b86633b1c0ca134d89e8236d285422c04e3 (diff)
Compute more mathematically well-rounded notion of transitive deps
By including the crate itself, we make the resulting set closed with respect to `transitve_reveres_dependencies` operation, as it becomes a proper transitive closure. This just feels more proper and mathy. And, indeed, this actually allows us to simplify call sites somewhat.
Diffstat (limited to 'crates/hir/src')
-rw-r--r--crates/hir/src/lib.rs3
1 files changed, 1 insertions, 2 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 30b96d7e2..aefebde06 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -1572,8 +1572,7 @@ impl Impl {
1572 pub fn all_for_trait(db: &dyn HirDatabase, trait_: Trait) -> Vec<Impl> { 1572 pub fn all_for_trait(db: &dyn HirDatabase, trait_: Trait) -> Vec<Impl> {
1573 let krate = trait_.module(db).krate(); 1573 let krate = trait_.module(db).krate();
1574 let mut all = Vec::new(); 1574 let mut all = Vec::new();
1575 for Crate { id } in krate.transitive_reverse_dependencies(db).into_iter().chain(Some(krate)) 1575 for Crate { id } in krate.transitive_reverse_dependencies(db).into_iter() {
1576 {
1577 let impls = db.trait_impls_in_crate(id); 1576 let impls = db.trait_impls_in_crate(id);
1578 all.extend(impls.for_trait(trait_.id).map(Self::from)) 1577 all.extend(impls.for_trait(trait_.id).map(Self::from))
1579 } 1578 }