Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/semantics/child_by_source.rs')
-rw-r--r--crates/hir/src/semantics/child_by_source.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/crates/hir/src/semantics/child_by_source.rs b/crates/hir/src/semantics/child_by_source.rs
index 5019a5987e..165ac7e4a0 100644
--- a/crates/hir/src/semantics/child_by_source.rs
+++ b/crates/hir/src/semantics/child_by_source.rs
@@ -5,7 +5,7 @@
//! node for a *child*, and get its hir.
use either::Either;
-use hir_expand::{HirFileId, attrs::collect_attrs};
+use hir_expand::HirFileId;
use span::AstIdNode;
use syntax::{AstPtr, ast};
@@ -94,6 +94,7 @@ impl ChildBySource for ModuleId {
impl ChildBySource for ItemScope {
fn child_by_source_to(&self, db: &dyn DefDatabase, res: &mut DynMap, file_id: HirFileId) {
+ let krate = file_id.krate(db);
self.declarations().for_each(|item| add_module_def(db, res, file_id, item));
self.impls().for_each(|imp| insert_item_loc(db, res, file_id, imp, keys::IMPL));
self.extern_blocks().for_each(|extern_block| {
@@ -123,12 +124,10 @@ impl ChildBySource for ItemScope {
|(ast_id, calls)| {
let adt = ast_id.to_node(db);
calls.for_each(|(attr_id, call_id, calls)| {
- if let Some((_, Either::Left(attr))) =
- collect_attrs(&adt).nth(attr_id.ast_index())
- {
- res[keys::DERIVE_MACRO_CALL]
- .insert(AstPtr::new(&attr), (attr_id, call_id, calls.into()));
- }
+ // FIXME: Fix cfg_attr handling.
+ let (attr, _, _, _) = attr_id.find_attr_range_with_source(db, krate, &adt);
+ res[keys::DERIVE_MACRO_CALL]
+ .insert(AstPtr::new(&attr), (attr_id, call_id, calls.into()));
});
},
);