@@ -11,7 +11,6 @@ use thiserror::Error;
11
11
12
12
use crate :: attr:: MetaVisitor ;
13
13
use crate :: config:: FileName ;
14
- use crate :: items:: is_mod_decl;
15
14
use crate :: parse:: parser:: {
16
15
Directory , DirectoryOwnership , ModError , ModulePathSuccess , Parser , ParserError ,
17
16
} ;
@@ -179,36 +178,37 @@ impl<'ast, 'sess> ModResolver<'ast, 'sess> {
179
178
for item in items {
180
179
if is_cfg_if ( item) {
181
180
self . visit_cfg_if ( item) ?;
182
- } else if let ast:: ItemKind :: Mod ( _, sub_mod_kind ) = & item. kind {
183
- self . visit_sub_mod ( & item, Module :: new ( item . span , Some ( sub_mod_kind ) , & [ ] , & [ ] ) ) ?;
181
+ } else if let ast:: ItemKind :: Mod ( _, mod_kind ) = & item. kind {
182
+ self . visit_mod ( & item, mod_kind ) ?;
184
183
}
185
184
}
186
185
Ok ( ( ) )
187
186
}
188
187
189
- fn visit_sub_mod (
188
+ fn visit_mod (
190
189
& mut self ,
191
190
item : & ' ast ast:: Item ,
192
- sub_mod : Module < ' ast > ,
191
+ mod_kind : & ' ast ast :: ModKind ,
193
192
) -> Result < ( ) , ModuleResolutionError > {
194
193
if contains_skip ( & item. attrs ) {
195
194
return Ok ( ( ) ) ;
196
195
}
197
- if is_mod_decl ( item) {
198
- // mod foo;
199
- // Look for an extern file.
200
- let Some ( kind) = self . find_external_module ( item) ? else {
201
- return Ok ( ( ) ) ;
202
- } ;
203
- self . insert_sub_mod ( kind. clone ( ) ) ?;
204
- self . visit_sub_mod_inner ( kind) ?;
205
- } else {
206
- // An internal module (`mod foo { /* ... */ }`);
207
- let directory = self . inline_mod_directory ( item. ident , & item. attrs ) ;
208
- self . with_directory ( directory, |this| {
209
- this. visit_sub_mod_after_directory_update ( sub_mod)
210
- } ) ?;
211
- } ;
196
+ match mod_kind {
197
+ ast:: ModKind :: Loaded ( items, ast:: Inline :: Yes , _) => {
198
+ // An internal module (`mod foo { /* ... */ }`);
199
+ let directory = self . inline_mod_directory ( item. ident , & item. attrs ) ;
200
+ self . with_directory ( directory, |this| this. visit_items ( items) ) ?;
201
+ }
202
+ _ => {
203
+ // mod foo;
204
+ // Look for an extern file.
205
+ let Some ( kind) = self . find_external_module ( item) ? else {
206
+ return Ok ( ( ) ) ;
207
+ } ;
208
+ self . insert_sub_mod ( kind. clone ( ) ) ?;
209
+ self . visit_sub_mod_inner ( kind) ?;
210
+ }
211
+ }
212
212
Ok ( ( ) )
213
213
}
214
214
0 commit comments