Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_def/src/child_by_source.rs')
| -rw-r--r-- | crates/hir_def/src/child_by_source.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/crates/hir_def/src/child_by_source.rs b/crates/hir_def/src/child_by_source.rs index 1a2b47cd03..feb6a88060 100644 --- a/crates/hir_def/src/child_by_source.rs +++ b/crates/hir_def/src/child_by_source.rs @@ -6,6 +6,7 @@ use either::Either; use hir_expand::HirFileId; +use syntax::ast::AttrsOwner; use crate::{ db::DefDatabase, @@ -108,6 +109,12 @@ impl ChildBySource for ItemScope { let item = ast_id.with_value(ast_id.to_node(db.upcast())); res[keys::ATTR_MACRO].insert(item, call_id); }); + self.derive_macro_invocs().for_each(|(ast_id, (attr_id, call_id))| { + let item = ast_id.to_node(db.upcast()); + if let Some(attr) = item.attrs().nth(attr_id.ast_index as usize) { + res[keys::DERIVE_MACRO].insert(ast_id.with_value(attr), call_id); + } + }); fn add_module_def( db: &dyn DefDatabase, |