Skip to content

Commit 6cf0cad

Browse files
committed
Simplify
1 parent 0c9268c commit 6cf0cad

File tree

1 file changed

+33
-46
lines changed

1 file changed

+33
-46
lines changed

crates/hir_def/src/child_by_source.rs

Lines changed: 33 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,8 @@ impl ChildBySource for TraitId {
3131
fn child_by_source_to(&self, db: &dyn DefDatabase, res: &mut DynMap, file_id: HirFileId) {
3232
let data = db.trait_data(*self);
3333
// FIXME attribute macros
34-
for (_name, item) in data.items.iter() {
35-
match *item {
36-
AssocItemId::FunctionId(func) => {
37-
let loc = func.lookup(db);
38-
if loc.id.file_id() == file_id {
39-
let src = loc.source(db);
40-
res[keys::FUNCTION].insert(src, func)
41-
}
42-
}
43-
AssocItemId::ConstId(konst) => {
44-
let loc = konst.lookup(db);
45-
if loc.id.file_id() == file_id {
46-
let src = loc.source(db);
47-
res[keys::CONST].insert(src, konst)
48-
}
49-
}
50-
AssocItemId::TypeAliasId(ty) => {
51-
let loc = ty.lookup(db);
52-
if loc.id.file_id() == file_id {
53-
let src = loc.source(db);
54-
res[keys::TYPE_ALIAS].insert(src, ty)
55-
}
56-
}
57-
}
34+
for &(_, item) in data.items.iter() {
35+
child_by_source_assoc_items(db, res, file_id, item);
5836
}
5937
}
6038
}
@@ -64,28 +42,37 @@ impl ChildBySource for ImplId {
6442
let data = db.impl_data(*self);
6543
// FIXME attribute macros
6644
for &item in data.items.iter() {
67-
match item {
68-
AssocItemId::FunctionId(func) => {
69-
let loc = func.lookup(db);
70-
if loc.id.file_id() == file_id {
71-
let src = loc.source(db);
72-
res[keys::FUNCTION].insert(src, func)
73-
}
74-
}
75-
AssocItemId::ConstId(konst) => {
76-
let loc = konst.lookup(db);
77-
if loc.id.file_id() == file_id {
78-
let src = loc.source(db);
79-
res[keys::CONST].insert(src, konst)
80-
}
81-
}
82-
AssocItemId::TypeAliasId(ty) => {
83-
let loc = ty.lookup(db);
84-
if loc.id.file_id() == file_id {
85-
let src = loc.source(db);
86-
res[keys::TYPE_ALIAS].insert(src, ty)
87-
}
88-
}
45+
child_by_source_assoc_items(db, res, file_id, item);
46+
}
47+
}
48+
}
49+
50+
fn child_by_source_assoc_items(
51+
db: &dyn DefDatabase,
52+
res: &mut DynMap,
53+
file_id: HirFileId,
54+
item: AssocItemId,
55+
) {
56+
match item {
57+
AssocItemId::FunctionId(func) => {
58+
let loc = func.lookup(db);
59+
if loc.id.file_id() == file_id {
60+
let src = loc.source(db);
61+
res[keys::FUNCTION].insert(src, func)
62+
}
63+
}
64+
AssocItemId::ConstId(konst) => {
65+
let loc = konst.lookup(db);
66+
if loc.id.file_id() == file_id {
67+
let src = loc.source(db);
68+
res[keys::CONST].insert(src, konst)
69+
}
70+
}
71+
AssocItemId::TypeAliasId(ty) => {
72+
let loc = ty.lookup(db);
73+
if loc.id.file_id() == file_id {
74+
let src = loc.source(db);
75+
res[keys::TYPE_ALIAS].insert(src, ty)
8976
}
9077
}
9178
}

0 commit comments

Comments
 (0)