@@ -31,30 +31,8 @@ impl ChildBySource for TraitId {
31
31
fn child_by_source_to ( & self , db : & dyn DefDatabase , res : & mut DynMap , file_id : HirFileId ) {
32
32
let data = db. trait_data ( * self ) ;
33
33
// 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) ;
58
36
}
59
37
}
60
38
}
@@ -64,28 +42,37 @@ impl ChildBySource for ImplId {
64
42
let data = db. impl_data ( * self ) ;
65
43
// FIXME attribute macros
66
44
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)
89
76
}
90
77
}
91
78
}
0 commit comments