@@ -135,7 +135,7 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
135135
136136 // Skip visiting sub modules when the input is from stdin.
137137 if self . recursive {
138- self . visit_mod_from_ast ( & krate. items ) ?;
138+ self . visit_mod ( & krate. items , true ) ?;
139139 }
140140
141141 let snippet_provider = self . parse_sess . snippet_provider ( krate. spans . inner_span ) ;
@@ -155,36 +155,14 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
155155 fn visit_cfg_if ( & mut self , item : & ast:: Item ) -> Result < ( ) , ModuleResolutionError > {
156156 let mut visitor = visitor:: CfgIfVisitor :: new ( self . parse_sess ) ;
157157 visitor. visit_item ( item) ;
158- self . visit_mod_outside_ast ( & visitor. items ) ?;
158+ self . visit_mod ( & visitor. items , false ) ?;
159159 Ok ( ( ) )
160160 }
161161
162- /// Visit modules defined inside macro calls.
163- fn visit_mod_outside_ast (
164- & mut self ,
165- items : & [ rustc_ast:: ptr:: P < ast:: Item > ] ,
166- ) -> Result < ( ) , ModuleResolutionError > {
167- for item in items {
168- if is_cfg_if ( item) {
169- self . visit_cfg_if ( item) ?;
170- continue ;
171- }
172-
173- if let ast:: ItemKind :: Mod ( _, ref sub_mod_kind) = item. kind {
174- let items = match sub_mod_kind {
175- ast:: ModKind :: Loaded ( items, ..) => Cow :: Borrowed ( items) ,
176- _ => Cow :: Owned ( ThinVec :: new ( ) ) ,
177- } ;
178- self . visit_sub_mod ( & item, Module :: new ( item. span , items, & [ ] ) , false ) ?;
179- }
180- }
181- Ok ( ( ) )
182- }
183-
184- /// Visit modules from AST.
185- fn visit_mod_from_ast (
162+ fn visit_mod (
186163 & mut self ,
187164 items : & [ rustc_ast:: ptr:: P < ast:: Item > ] ,
165+ from_ast : bool ,
188166 ) -> Result < ( ) , ModuleResolutionError > {
189167 for item in items {
190168 if is_cfg_if ( item) {
@@ -196,7 +174,7 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
196174 ast:: ModKind :: Loaded ( items, ..) => Cow :: Borrowed ( items) ,
197175 _ => Cow :: Owned ( ThinVec :: new ( ) ) ,
198176 } ;
199- self . visit_sub_mod ( item, Module :: new ( item. span , items, & [ ] ) , true ) ?;
177+ self . visit_sub_mod ( & item, Module :: new ( item. span , items, & [ ] ) , from_ast ) ?;
200178 }
201179 }
202180 Ok ( ( ) )
@@ -270,27 +248,19 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
270248 path : mod_path. parent ( ) . unwrap ( ) . to_path_buf ( ) ,
271249 ownership : directory_ownership,
272250 } ;
273- self . with_directory ( directory, |this| this. visit_mod_outside_ast ( & sub_mod. items ) ) ?;
251+ self . with_directory ( directory, |this| this. visit_mod ( & sub_mod. items , false ) ) ?;
274252 }
275253 SubModKind :: Internal ( item) => {
276254 let directory = self . inline_mod_directory ( item. ident , & item. attrs ) ;
277- self . with_directory ( directory, |this| {
278- if from_ast {
279- this. visit_mod_from_ast ( & sub_mod. items )
280- } else {
281- this. visit_mod_outside_ast ( & sub_mod. items )
282- }
283- } ) ?;
255+ self . with_directory ( directory, |this| this. visit_mod ( & sub_mod. items , from_ast) ) ?;
284256 }
285257 SubModKind :: MultiExternal ( mods) => {
286258 for ( mod_path, directory_ownership, sub_mod) in mods {
287259 let directory = Directory {
288260 path : mod_path. parent ( ) . unwrap ( ) . to_path_buf ( ) ,
289261 ownership : directory_ownership,
290262 } ;
291- self . with_directory ( directory, |this| {
292- this. visit_mod_outside_ast ( & sub_mod. items )
293- } ) ?;
263+ self . with_directory ( directory, |this| this. visit_mod ( & sub_mod. items , false ) ) ?;
294264 }
295265 }
296266 }
0 commit comments