Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_def/src/nameres/collector.rs')
-rw-r--r--crates/hir_def/src/nameres/collector.rs26
1 files changed, 15 insertions, 11 deletions
diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs
index 897e72b698..59ed617888 100644
--- a/crates/hir_def/src/nameres/collector.rs
+++ b/crates/hir_def/src/nameres/collector.rs
@@ -606,16 +606,16 @@ impl DefCollector<'_> {
) {
// Textual scoping
self.define_legacy_macro(module_id, name.clone(), macro_);
- let macro_ = macro_.into();
- self.def_map.modules[module_id].scope.declare_macro(macro_);
// Module scoping
// In Rust, `#[macro_export]` macros are unconditionally visible at the
// crate root, even if the parent modules is **not** visible.
if export {
+ let module_id = self.def_map.root;
+ self.def_map.modules[module_id].scope.declare(macro_.into());
self.update(
- self.def_map.root,
- &[(Some(name), PerNs::macros(macro_, Visibility::Public))],
+ module_id,
+ &[(Some(name), PerNs::macros(macro_.into(), Visibility::Public))],
Visibility::Public,
ImportType::Named,
);
@@ -646,9 +646,13 @@ impl DefCollector<'_> {
) {
let vis =
self.def_map.resolve_visibility(self.db, module_id, vis).unwrap_or(Visibility::Public);
- let macro_ = macro_.into();
- self.def_map.modules[module_id].scope.declare_macro(macro_);
- self.update(module_id, &[(Some(name), PerNs::macros(macro_, vis))], vis, ImportType::Named);
+ self.def_map.modules[module_id].scope.declare(macro_.into());
+ self.update(
+ module_id,
+ &[(Some(name), PerNs::macros(macro_.into(), Visibility::Public))],
+ vis,
+ ImportType::Named,
+ );
}
/// Define a proc macro
@@ -656,11 +660,11 @@ impl DefCollector<'_> {
/// A proc macro is similar to normal macro scope, but it would not visible in legacy textual scoped.
/// And unconditionally exported.
fn define_proc_macro(&mut self, name: Name, macro_: ProcMacroId) {
- let macro_ = macro_.into();
- self.def_map.modules[self.def_map.root].scope.declare_macro(macro_);
+ let module_id = self.def_map.root;
+ self.def_map.modules[module_id].scope.declare(macro_.into());
self.update(
- self.def_map.root,
- &[(Some(name), PerNs::macros(macro_, Visibility::Public))],
+ module_id,
+ &[(Some(name), PerNs::macros(macro_.into(), Visibility::Public))],
Visibility::Public,
ImportType::Named,
);