@@ -64,31 +64,34 @@ impl Module<'hir> {
64
64
}
65
65
66
66
pub ( crate ) fn push_item ( & mut self , new_item : Item < ' hir > ) {
67
- for item_iter in self . items . iter_mut ( ) {
68
- if item_iter. name ( ) == new_item. name ( ) {
69
- if item_iter. from_glob {
70
- debug ! ( "push_item: {:?} shadowed by {:?}" , * item_iter, new_item) ;
71
- * item_iter = new_item;
67
+ if let Some ( existed_item) =
68
+ self . items . iter_mut ( ) . find ( |item| item. name ( ) == new_item. name ( ) )
69
+ {
70
+ if existed_item. name ( ) == new_item. name ( ) {
71
+ if existed_item. from_glob {
72
+ debug ! ( "push_item: {:?} shadowed by {:?}" , * existed_item, new_item) ;
73
+ * existed_item = new_item;
72
74
return ;
73
75
} else if new_item. from_glob {
74
76
return ;
75
77
}
76
78
}
79
+ } else {
80
+ self . items . push ( new_item) ;
77
81
}
78
- self . items . push ( new_item) ;
79
82
}
80
83
81
84
pub ( crate ) fn push_mod ( & mut self , new_item : Module < ' hir > ) {
82
- if let Some ( shadowed_mod) = self . mods . iter_mut ( ) . find ( |mod_| mod_. name == new_item. name ) {
83
- if item_iter. from_glob {
84
- debug ! ( "push_mod: {:?} shadowed by {:?}" , item_iter. name, new_item. name) ;
85
- * item_iter = new_item;
86
- return ;
87
- } else if new_item. from_glob {
88
- return ;
89
- }
85
+ if let Some ( existed_mod) = self . mods . iter_mut ( ) . find ( |mod_| mod_. name == new_item. name ) {
86
+ if existed_mod. from_glob {
87
+ debug ! ( "push_mod: {:?} shadowed by {:?}" , existed_mod. name, new_item. name) ;
88
+ * existed_mod = new_item;
89
+ return ;
90
+ } else if new_item. from_glob {
91
+ return ;
90
92
}
93
+ } else {
94
+ self . mods . push ( new_item) ;
91
95
}
92
- self . mods. push( new_item) ;
93
96
}
94
97
}
0 commit comments