aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/method_resolution.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty/method_resolution.rs')
-rw-r--r--crates/ra_hir/src/ty/method_resolution.rs30
1 files changed, 10 insertions, 20 deletions
diff --git a/crates/ra_hir/src/ty/method_resolution.rs b/crates/ra_hir/src/ty/method_resolution.rs
index a7d4517ee..da7587f01 100644
--- a/crates/ra_hir/src/ty/method_resolution.rs
+++ b/crates/ra_hir/src/ty/method_resolution.rs
@@ -46,18 +46,13 @@ impl CrateImplBlocks {
46 ty: &Ty, 46 ty: &Ty,
47 ) -> impl Iterator<Item = (Module, ImplBlock)> + 'a { 47 ) -> impl Iterator<Item = (Module, ImplBlock)> + 'a {
48 let fingerprint = TyFingerprint::for_impl(ty); 48 let fingerprint = TyFingerprint::for_impl(ty);
49 fingerprint 49 fingerprint.and_then(|f| self.impls.get(&f)).into_iter().flat_map(|i| i.iter()).map(
50 .and_then(|f| self.impls.get(&f)) 50 move |(module_id, impl_id)| {
51 .into_iter() 51 let module = Module { krate: self.krate, module_id: *module_id };
52 .flat_map(|i| i.iter())
53 .map(move |(module_id, impl_id)| {
54 let module = Module {
55 krate: self.krate,
56 module_id: *module_id,
57 };
58 let module_impl_blocks = db.impls_in_module(module); 52 let module_impl_blocks = db.impls_in_module(module);
59 (module, ImplBlock::from_id(module_impl_blocks, *impl_id)) 53 (module, ImplBlock::from_id(module_impl_blocks, *impl_id))
60 }) 54 },
55 )
61 } 56 }
62 57
63 pub fn lookup_impl_blocks_for_trait<'a>( 58 pub fn lookup_impl_blocks_for_trait<'a>(
@@ -66,18 +61,13 @@ impl CrateImplBlocks {
66 tr: &Trait, 61 tr: &Trait,
67 ) -> impl Iterator<Item = (Module, ImplBlock)> + 'a { 62 ) -> impl Iterator<Item = (Module, ImplBlock)> + 'a {
68 let id = tr.id; 63 let id = tr.id;
69 self.impls_by_trait 64 self.impls_by_trait.get(&id).into_iter().flat_map(|i| i.iter()).map(
70 .get(&id) 65 move |(module_id, impl_id)| {
71 .into_iter() 66 let module = Module { krate: self.krate, module_id: *module_id };
72 .flat_map(|i| i.iter())
73 .map(move |(module_id, impl_id)| {
74 let module = Module {
75 krate: self.krate,
76 module_id: *module_id,
77 };
78 let module_impl_blocks = db.impls_in_module(module); 67 let module_impl_blocks = db.impls_in_module(module);
79 (module, ImplBlock::from_id(module_impl_blocks, *impl_id)) 68 (module, ImplBlock::from_id(module_impl_blocks, *impl_id))
80 }) 69 },
70 )
81 } 71 }
82 72
83 fn collect_recursive(&mut self, db: &impl HirDatabase, module: &Module) { 73 fn collect_recursive(&mut self, db: &impl HirDatabase, module: &Module) {