@@ -267,14 +267,9 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
267
267
}
268
268
269
269
// Look for nested path, like `#[cfg_attr(feature = "foo", path = "bar.rs")]`.
270
- match self . find_mods_ouside_of_ast ( attrs, sub_mod) {
271
- Some ( mods) => {
272
- if !mods. is_empty ( ) {
273
- return Ok ( SubModKind :: MultiExternal ( mods) ) ;
274
- }
275
- }
276
- _ => ( ) ,
277
- }
270
+ let mut mods_outside_ast = self
271
+ . find_mods_ouside_of_ast ( attrs, sub_mod)
272
+ . unwrap_or ( vec ! [ ] ) ;
278
273
279
274
let relative = match self . directory . ownership {
280
275
DirectoryOwnership :: Owned { relative } => relative,
@@ -292,7 +287,15 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
292
287
path,
293
288
directory_ownership,
294
289
..
295
- } ) => Ok ( SubModKind :: External ( path, directory_ownership) ) ,
290
+ } ) => Ok ( if mods_outside_ast. is_empty ( ) {
291
+ SubModKind :: External ( path, directory_ownership)
292
+ } else {
293
+ mods_outside_ast. push ( ( path, directory_ownership, sub_mod. clone ( ) ) ) ;
294
+ SubModKind :: MultiExternal ( mods_outside_ast)
295
+ } ) ,
296
+ Err ( _) if !mods_outside_ast. is_empty ( ) => {
297
+ Ok ( SubModKind :: MultiExternal ( mods_outside_ast) )
298
+ }
296
299
Err ( _) => Err ( format ! (
297
300
"Failed to find module {} in {:?} {:?}" ,
298
301
mod_name, self . directory. path, relative,
@@ -375,7 +378,8 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
375
378
) ;
376
379
parser. cfg_mods = false ;
377
380
let lo = parser. span ;
378
- let mod_attrs = match parse_inner_attributes ( & mut parser) {
381
+ // FIXME(topecongiro) Format inner attributes (#3606).
382
+ let _mod_attrs = match parse_inner_attributes ( & mut parser) {
379
383
Ok ( attrs) => attrs,
380
384
Err ( mut e) => {
381
385
e. cancel ( ) ;
0 commit comments