@@ -135,7 +135,7 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
135
135
136
136
// Skip visiting sub modules when the input is from stdin.
137
137
if self . recursive {
138
- self . visit_mod_from_ast ( & krate. items ) ?;
138
+ self . visit_mod ( & krate. items , true ) ?;
139
139
}
140
140
141
141
let snippet_provider = self . parse_sess . snippet_provider ( krate. spans . inner_span ) ;
@@ -155,36 +155,14 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
155
155
fn visit_cfg_if ( & mut self , item : & ast:: Item ) -> Result < ( ) , ModuleResolutionError > {
156
156
let mut visitor = visitor:: CfgIfVisitor :: new ( self . parse_sess ) ;
157
157
visitor. visit_item ( item) ;
158
- self . visit_mod_outside_ast ( & visitor. items ) ?;
158
+ self . visit_mod ( & visitor. items , false ) ?;
159
159
Ok ( ( ) )
160
160
}
161
161
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 (
186
163
& mut self ,
187
164
items : & [ rustc_ast:: ptr:: P < ast:: Item > ] ,
165
+ from_ast : bool ,
188
166
) -> Result < ( ) , ModuleResolutionError > {
189
167
for item in items {
190
168
if is_cfg_if ( item) {
@@ -196,7 +174,7 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
196
174
ast:: ModKind :: Loaded ( items, ..) => Cow :: Borrowed ( items) ,
197
175
_ => Cow :: Owned ( ThinVec :: new ( ) ) ,
198
176
} ;
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 ) ?;
200
178
}
201
179
}
202
180
Ok ( ( ) )
@@ -270,27 +248,19 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
270
248
path : mod_path. parent ( ) . unwrap ( ) . to_path_buf ( ) ,
271
249
ownership : directory_ownership,
272
250
} ;
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 ) ) ?;
274
252
}
275
253
SubModKind :: Internal ( item) => {
276
254
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) ) ?;
284
256
}
285
257
SubModKind :: MultiExternal ( mods) => {
286
258
for ( mod_path, directory_ownership, sub_mod) in mods {
287
259
let directory = Directory {
288
260
path : mod_path. parent ( ) . unwrap ( ) . to_path_buf ( ) ,
289
261
ownership : directory_ownership,
290
262
} ;
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 ) ) ?;
294
264
}
295
265
}
296
266
}
0 commit comments