diff options
author | uHOOCCOOHu <[email protected]> | 2019-09-05 09:20:36 +0100 |
---|---|---|
committer | uHOOCCOOHu <[email protected]> | 2019-09-05 11:50:04 +0100 |
commit | dec43a0c5dd164279f94e9ab6e6d69ec28e294fd (patch) | |
tree | ed324f13437c6137e335aecf572e4b189d131e5b /crates/ra_hir/src/nameres/collector.rs | |
parent | 6702f5b7b5b7ddc23398c1b5d77891e9b4b1345a (diff) |
Consider prelude to be `macro_use`
Diffstat (limited to 'crates/ra_hir/src/nameres/collector.rs')
-rw-r--r-- | crates/ra_hir/src/nameres/collector.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index 5d1c42926..3e689e360 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs | |||
@@ -185,11 +185,14 @@ where | |||
185 | 185 | ||
186 | if let Some(ModuleDef::Module(m)) = res.take_types() { | 186 | if let Some(ModuleDef::Module(m)) = res.take_types() { |
187 | tested_by!(macro_rules_from_other_crates_are_visible_with_macro_use); | 187 | tested_by!(macro_rules_from_other_crates_are_visible_with_macro_use); |
188 | self.import_all_macros_exported(m); | ||
189 | } | ||
190 | } | ||
188 | 191 | ||
189 | let item_map = self.db.crate_def_map(m.krate); | 192 | fn import_all_macros_exported(&mut self, module: Module) { |
190 | for (name, ¯o_id) in &item_map.exported_macros { | 193 | let item_map = self.db.crate_def_map(module.krate); |
191 | self.global_macro_scope.insert(name.clone(), macro_id); | 194 | for (name, ¯o_id) in &item_map.exported_macros { |
192 | } | 195 | self.global_macro_scope.insert(name.clone(), macro_id); |
193 | } | 196 | } |
194 | } | 197 | } |
195 | 198 | ||
@@ -522,6 +525,12 @@ where | |||
522 | DB: DefDatabase, | 525 | DB: DefDatabase, |
523 | { | 526 | { |
524 | fn collect(&mut self, items: &[raw::RawItem]) { | 527 | fn collect(&mut self, items: &[raw::RawItem]) { |
528 | // Prelude module is always considered to be `#[macro_use]`. | ||
529 | if let Some(prelude_module) = self.def_collector.def_map.prelude { | ||
530 | tested_by!(prelude_is_macro_use); | ||
531 | self.def_collector.import_all_macros_exported(prelude_module); | ||
532 | } | ||
533 | |||
525 | for item in items { | 534 | for item in items { |
526 | match *item { | 535 | match *item { |
527 | raw::RawItem::Module(m) => self.collect_module(&self.raw_items[m]), | 536 | raw::RawItem::Module(m) => self.collect_module(&self.raw_items[m]), |