aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/nameres/collector.rs
diff options
context:
space:
mode:
authoruHOOCCOOHu <[email protected]>2019-08-29 18:56:00 +0100
committeruHOOCCOOHu <[email protected]>2019-08-31 18:54:41 +0100
commitf5bea9051b81f3a490c08afdb336c63c9180aae0 (patch)
treedca2027e759bbaeaa116b1cae828cd28d507f6e3 /crates/ra_hir/src/nameres/collector.rs
parentf2a200c1ee8016f47b35e2e13a899fc96286a1eb (diff)
Support resolution of `#[macro_use] extern crate`
Diffstat (limited to 'crates/ra_hir/src/nameres/collector.rs')
-rw-r--r--crates/ra_hir/src/nameres/collector.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs
index 7da2dcdff..26158b5c3 100644
--- a/crates/ra_hir/src/nameres/collector.rs
+++ b/crates/ra_hir/src/nameres/collector.rs
@@ -295,6 +295,23 @@ where
295 } 295 }
296 } 296 }
297 297
298 // `#[macro_use] extern crate` glob import macros
299 if import.is_extern_crate && import.is_macro_use {
300 if let Some(ModuleDef::Module(m)) =
301 def.a().and_then(|item| item.take_types())
302 {
303 let item_map = self.db.crate_def_map(m.krate);
304 let scope = &item_map[m.module_id].scope;
305 let macros = scope
306 .macros
307 .iter()
308 .map(|(name, res)| (name.clone(), Either::B(*res)))
309 .collect::<Vec<_>>();
310
311 self.update(module_id, Some(import_id), &macros);
312 }
313 }
314
298 let resolution = match def { 315 let resolution = match def {
299 Either::A(item) => { 316 Either::A(item) => {
300 Either::A(Resolution { def: item, import: Some(import_id) }) 317 Either::A(Resolution { def: item, import: Some(import_id) })