This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +32
-4
lines changed Expand file tree Collapse file tree 4 files changed +32
-4
lines changed Original file line number Diff line number Diff line change @@ -183,7 +183,7 @@ fn find_path_for_module(
183
183
184
184
// - if the item is the crate root of a dependency crate, return the name from the extern prelude
185
185
let root_def_map = crate_root. def_map ( db) ;
186
- for ( name, & def_id) in root_def_map. extern_prelude ( ) {
186
+ for ( name, def_id) in root_def_map. extern_prelude ( ) {
187
187
if module_id == def_id {
188
188
let name = scope_name. unwrap_or_else ( || name. clone ( ) ) ;
189
189
Original file line number Diff line number Diff line change @@ -355,8 +355,12 @@ impl DefMap {
355
355
self . prelude
356
356
}
357
357
358
- pub ( crate ) fn extern_prelude ( & self ) -> impl Iterator < Item = ( & Name , & ModuleId ) > + ' _ {
359
- self . extern_prelude . iter ( )
358
+ pub ( crate ) fn extern_prelude ( & self ) -> impl Iterator < Item = ( & Name , ModuleId ) > + ' _ {
359
+ self . extern_prelude . iter ( ) . map ( |( name, def) | ( name, * def) )
360
+ }
361
+
362
+ pub ( crate ) fn macro_use_prelude ( & self ) -> impl Iterator < Item = ( & Name , MacroId ) > + ' _ {
363
+ self . macro_use_prelude . iter ( ) . map ( |( name, def) | ( name, * def) )
360
364
}
361
365
362
366
pub fn module_id ( & self , local_id : LocalModuleId ) -> ModuleId {
Original file line number Diff line number Diff line change @@ -461,7 +461,10 @@ impl Resolver {
461
461
res. add ( name, ScopeDef :: ModuleDef ( ModuleDefId :: MacroId ( mac) ) ) ;
462
462
} )
463
463
} ) ;
464
- def_map. extern_prelude ( ) . for_each ( |( name, & def) | {
464
+ def_map. macro_use_prelude ( ) . for_each ( |( name, def) | {
465
+ res. add ( name, ScopeDef :: ModuleDef ( def. into ( ) ) ) ;
466
+ } ) ;
467
+ def_map. extern_prelude ( ) . for_each ( |( name, def) | {
465
468
res. add ( name, ScopeDef :: ModuleDef ( ModuleDefId :: ModuleId ( def) ) ) ;
466
469
} ) ;
467
470
BUILTIN_SCOPE . iter ( ) . for_each ( |( name, & def) | {
Original file line number Diff line number Diff line change @@ -1265,3 +1265,24 @@ macro_rules! define_struct {
1265
1265
"# ] ] ,
1266
1266
) ;
1267
1267
}
1268
+
1269
+ #[ test]
1270
+ fn macro_use_prelude_is_in_scope ( ) {
1271
+ check (
1272
+ r#"
1273
+ //- /main.rs crate:main deps:dep
1274
+ #[macro_use]
1275
+ extern crate dep;
1276
+
1277
+ fn main() {
1278
+ print$0
1279
+ }
1280
+ //- /lib.rs crate:dep
1281
+ #[macro_export]
1282
+ macro_rules! println {
1283
+ () => {}
1284
+ }
1285
+ "# ,
1286
+ expect ! [ "" ] ,
1287
+ )
1288
+ }
You can’t perform that action at this time.
0 commit comments