From 6cf0cadfaad0eb1dfdaebb4d3676438fbb644c1b Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 7 Jan 2022 21:51:59 +0100 Subject: [PATCH] Simplify --- crates/hir_def/src/child_by_source.rs | 79 +++++++++++---------------- 1 file changed, 33 insertions(+), 46 deletions(-) diff --git a/crates/hir_def/src/child_by_source.rs b/crates/hir_def/src/child_by_source.rs index c5d01347790..1ef41d90b51 100644 --- a/crates/hir_def/src/child_by_source.rs +++ b/crates/hir_def/src/child_by_source.rs @@ -31,30 +31,8 @@ impl ChildBySource for TraitId { fn child_by_source_to(&self, db: &dyn DefDatabase, res: &mut DynMap, file_id: HirFileId) { let data = db.trait_data(*self); // FIXME attribute macros - for (_name, item) in data.items.iter() { - match *item { - AssocItemId::FunctionId(func) => { - let loc = func.lookup(db); - if loc.id.file_id() == file_id { - let src = loc.source(db); - res[keys::FUNCTION].insert(src, func) - } - } - AssocItemId::ConstId(konst) => { - let loc = konst.lookup(db); - if loc.id.file_id() == file_id { - let src = loc.source(db); - res[keys::CONST].insert(src, konst) - } - } - AssocItemId::TypeAliasId(ty) => { - let loc = ty.lookup(db); - if loc.id.file_id() == file_id { - let src = loc.source(db); - res[keys::TYPE_ALIAS].insert(src, ty) - } - } - } + for &(_, item) in data.items.iter() { + child_by_source_assoc_items(db, res, file_id, item); } } } @@ -64,28 +42,37 @@ impl ChildBySource for ImplId { let data = db.impl_data(*self); // FIXME attribute macros for &item in data.items.iter() { - match item { - AssocItemId::FunctionId(func) => { - let loc = func.lookup(db); - if loc.id.file_id() == file_id { - let src = loc.source(db); - res[keys::FUNCTION].insert(src, func) - } - } - AssocItemId::ConstId(konst) => { - let loc = konst.lookup(db); - if loc.id.file_id() == file_id { - let src = loc.source(db); - res[keys::CONST].insert(src, konst) - } - } - AssocItemId::TypeAliasId(ty) => { - let loc = ty.lookup(db); - if loc.id.file_id() == file_id { - let src = loc.source(db); - res[keys::TYPE_ALIAS].insert(src, ty) - } - } + child_by_source_assoc_items(db, res, file_id, item); + } + } +} + +fn child_by_source_assoc_items( + db: &dyn DefDatabase, + res: &mut DynMap, + file_id: HirFileId, + item: AssocItemId, +) { + match item { + AssocItemId::FunctionId(func) => { + let loc = func.lookup(db); + if loc.id.file_id() == file_id { + let src = loc.source(db); + res[keys::FUNCTION].insert(src, func) + } + } + AssocItemId::ConstId(konst) => { + let loc = konst.lookup(db); + if loc.id.file_id() == file_id { + let src = loc.source(db); + res[keys::CONST].insert(src, konst) + } + } + AssocItemId::TypeAliasId(ty) => { + let loc = ty.lookup(db); + if loc.id.file_id() == file_id { + let src = loc.source(db); + res[keys::TYPE_ALIAS].insert(src, ty) } } }