From 6cf9969546dd32dbb5713e3fa6e01f6247b77d25 Mon Sep 17 00:00:00 2001 From: Jake Heinz Date: Mon, 29 Nov 2021 05:28:22 +0000 Subject: [PATCH] collect macro_rules! macros into macro declarations --- crates/hir_def/src/item_scope.rs | 2 +- crates/hir_def/src/nameres/collector.rs | 1 + crates/ide_db/src/symbol_index.rs | 11 +---------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/crates/hir_def/src/item_scope.rs b/crates/hir_def/src/item_scope.rs index 8b5984bf123..37599371f61 100644 --- a/crates/hir_def/src/item_scope.rs +++ b/crates/hir_def/src/item_scope.rs @@ -127,7 +127,7 @@ pub(crate) fn macros<'a>(&'a self) -> impl Iterator(&'a self) -> impl Iterator + 'a { + pub(crate) fn legacy_macros<'a>(&'a self) -> impl Iterator + 'a { self.legacy_macros.iter().map(|(name, def)| (name, *def)) } diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs index 49d2a7866a3..d7a35caf29e 100644 --- a/crates/hir_def/src/nameres/collector.rs +++ b/crates/hir_def/src/nameres/collector.rs @@ -594,6 +594,7 @@ fn define_macro_rules( ) { // Textual scoping self.define_legacy_macro(module_id, name.clone(), macro_); + self.def_map.modules[module_id].scope.declare_macro(macro_); // Module scoping // In Rust, `#[macro_export]` macros are unconditionally visible at the diff --git a/crates/ide_db/src/symbol_index.rs b/crates/ide_db/src/symbol_index.rs index 53fa3f0881f..b8efa279e1b 100644 --- a/crates/ide_db/src/symbol_index.rs +++ b/crates/ide_db/src/symbol_index.rs @@ -490,8 +490,6 @@ fn collect_from_module(&mut self, module_id: ModuleId) { let module_data = &def_map[module_id.local_id]; let scope = &module_data.scope; - dbg!(scope); - for module_def_id in scope.declarations() { match module_def_id { ModuleDefId::ModuleId(id) => self.push_module(id), @@ -533,13 +531,6 @@ fn collect_from_module(&mut self, module_id: ModuleId) { self.work.push(SymbolCollectorWorkItem::Body { body: const_id.into() }) } - // Collect legacy macros from the root module only: - if module_data.parent.is_none() { - for (_, macro_def_id) in scope.legacy_macros() { - self.push_decl_macro(macro_def_id.into()); - } - } - for macro_def_id in scope.macro_declarations() { self.push_decl_macro(macro_def_id.into()); } @@ -699,7 +690,7 @@ fn push_module(&mut self, module_id: ModuleId) { }) } - pub(crate) fn push_decl_macro(&mut self, macro_def: MacroDef) { + fn push_decl_macro(&mut self, macro_def: MacroDef) { self.push_file_symbol(|s| { let name = macro_def.name(s.db.upcast())?.as_text()?; let source = macro_def.source(s.db.upcast())?; -- 2.44.0