@@ -142,7 +142,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
142
142
143
143
// Skip visiting sub modules when the input is from stdin.
144
144
if self . recursive {
145
- self . visit_mod_from_ast ( & krate. items ) ?;
145
+ self . visit_mod ( & krate. items ) ?;
146
146
}
147
147
148
148
let snippet_provider = self . parse_sess . snippet_provider ( krate. spans . inner_span ) ;
@@ -163,53 +163,22 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
163
163
fn visit_cfg_if ( & mut self , item : & ast:: Item ) -> Result < ( ) , ModuleResolutionError > {
164
164
let mut visitor = visitor:: CfgIfVisitor :: new ( self . parse_sess ) ;
165
165
visitor. visit_item ( item) ;
166
- self . visit_mod_outside_ast ( & visitor. items ) ?;
166
+ self . visit_mod ( & visitor. items ) ?;
167
167
Ok ( ( ) )
168
168
}
169
169
170
- /// Visit modules defined inside macro calls.
171
- fn visit_mod_outside_ast (
170
+ fn visit_mod (
172
171
& mut self ,
173
172
items : & [ rustc_ast:: ptr:: P < ast:: Item > ] ,
174
173
) -> Result < ( ) , ModuleResolutionError > {
175
174
for item in items {
176
175
if is_cfg_if ( item) {
177
176
self . visit_cfg_if ( item) ?;
178
- continue ;
179
- }
180
-
181
- if let ast:: ItemKind :: Mod ( _, ref sub_mod_kind) = item. kind {
182
- let span = item. span ;
177
+ } else if let ast:: ItemKind :: Mod ( _, sub_mod_kind) = & item. kind {
183
178
self . visit_sub_mod (
184
179
& item,
185
180
Module :: new (
186
- span,
187
- Some ( Cow :: Borrowed ( sub_mod_kind) ) ,
188
- Cow :: Owned ( ThinVec :: new ( ) ) ,
189
- & [ ] ,
190
- ) ,
191
- ) ?;
192
- }
193
- }
194
- Ok ( ( ) )
195
- }
196
-
197
- /// Visit modules from AST.
198
- fn visit_mod_from_ast (
199
- & mut self ,
200
- items : & [ rustc_ast:: ptr:: P < ast:: Item > ] ,
201
- ) -> Result < ( ) , ModuleResolutionError > {
202
- for item in items {
203
- if is_cfg_if ( item) {
204
- self . visit_cfg_if ( item) ?;
205
- }
206
-
207
- if let ast:: ItemKind :: Mod ( _, ref sub_mod_kind) = item. kind {
208
- let span = item. span ;
209
- self . visit_sub_mod (
210
- item,
211
- Module :: new (
212
- span,
181
+ item. span ,
213
182
Some ( Cow :: Borrowed ( sub_mod_kind) ) ,
214
183
Cow :: Owned ( ThinVec :: new ( ) ) ,
215
184
& [ ] ,
@@ -315,14 +284,10 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
315
284
if let Some ( directory) = directory {
316
285
self . directory = directory;
317
286
}
318
- match ( sub_mod. ast_mod_kind , sub_mod. items ) {
319
- ( Some ( Cow :: Borrowed ( ast:: ModKind :: Loaded ( items, _, _) ) ) , _) => {
320
- self . visit_mod_from_ast ( items)
321
- }
322
- ( Some ( Cow :: Owned ( ast:: ModKind :: Loaded ( items, _, _) ) ) , _) | ( _, Cow :: Owned ( items) ) => {
323
- self . visit_mod_outside_ast ( & items)
324
- }
325
- ( _, _) => Ok ( ( ) ) ,
287
+ if let Some ( ast:: ModKind :: Loaded ( items, _, _) ) = sub_mod. ast_mod_kind . as_deref ( ) {
288
+ self . visit_mod ( & items)
289
+ } else {
290
+ self . visit_mod ( & sub_mod. items )
326
291
}
327
292
}
328
293
0 commit comments