Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/symbols.rs')
-rw-r--r--crates/hir/src/symbols.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/crates/hir/src/symbols.rs b/crates/hir/src/symbols.rs
index 857c9e0ed9..11dccbe8a6 100644
--- a/crates/hir/src/symbols.rs
+++ b/crates/hir/src/symbols.rs
@@ -4,13 +4,13 @@ use base_db::FileRange;
use either::Either;
use hir_def::{
item_tree::ItemTreeNode, src::HasSource, AdtId, AssocItemId, AssocItemLoc, DefWithBodyId,
- ImplId, ItemContainerId, ItemLoc, Lookup, ModuleDefId, ModuleId, TraitId,
+ ImplId, ItemContainerId, Lookup, MacroId, ModuleDefId, ModuleId, TraitId,
};
use hir_expand::{HirFileId, InFile};
use hir_ty::db::HirDatabase;
use syntax::{ast::HasName, AstNode, SmolStr, SyntaxNode, SyntaxNodePtr};
-use crate::{HasSource as _, MacroDef, Module, Semantics};
+use crate::{HasSource as _, Macro, Module, Semantics};
/// The actual data that is stored in the index. It should be as compact as
/// possible.
@@ -157,6 +157,11 @@ impl<'a> SymbolCollector<'a> {
ModuleDefId::TypeAliasId(id) => {
self.push_decl_assoc(id, FileSymbolKind::TypeAlias);
}
+ ModuleDefId::MacroId(id) => match id {
+ MacroId::Macro2Id(id) => self.push_decl(id, FileSymbolKind::Macro),
+ MacroId::MacroRulesId(id) => self.push_decl(id, FileSymbolKind::Macro),
+ MacroId::ProcMacroId(id) => self.push_decl(id, FileSymbolKind::Macro),
+ },
// Don't index these.
ModuleDefId::BuiltinType(_) => {}
ModuleDefId::EnumVariantId(_) => {}
@@ -283,11 +288,11 @@ impl<'a> SymbolCollector<'a> {
})
}
- fn push_decl<L, T>(&mut self, id: L, kind: FileSymbolKind)
+ fn push_decl<L>(&mut self, id: L, kind: FileSymbolKind)
where
- L: Lookup<Data = ItemLoc<T>>,
- T: ItemTreeNode,
- <T as ItemTreeNode>::Source: HasName,
+ L: Lookup,
+ <L as Lookup>::Data: HasSource,
+ <<L as Lookup>::Data as HasSource>::Value: HasName,
{
self.push_file_symbol(|s| {
let loc = id.lookup(s.db.upcast());
@@ -328,7 +333,7 @@ impl<'a> SymbolCollector<'a> {
})
}
- fn push_decl_macro(&mut self, macro_def: MacroDef) {
+ fn push_decl_macro(&mut self, macro_def: Macro) {
self.push_file_symbol(|s| {
let name = macro_def.name(s.db)?.as_text()?;
let source = macro_def.source(s.db)?;