Inline macro calls in assoc item position logic

This commit is contained in:
Oli Scherer
2026-04-07 12:51:16 +02:00
parent 690df236c2
commit e61773669a
2 changed files with 26 additions and 23 deletions
@@ -1418,28 +1418,8 @@ pub(crate) fn brg_visit_assoc_item(&mut self, item: &'a AssocItem, ctxt: AssocCt
AssocItemKind::Type(box TyAlias { ident, .. }) => (ident, TypeNS),
AssocItemKind::MacCall(_) => {
match ctxt {
AssocCtxt::Trait => {
self.visit_invoc_in_module(item.id);
}
AssocCtxt::Impl { .. } => {
let invoc_id = item.id.placeholder_to_expn_id();
if !self.r.glob_delegation_invoc_ids.contains(&invoc_id) {
self.r
.impl_unexpanded_invocations
.entry(self.r.invocation_parent(invoc_id))
.or_default()
.insert(invoc_id);
}
self.visit_invoc(item.id);
}
}
return;
}
AssocItemKind::DelegationMac(..) => {
span_bug!(item.span, "delegation mac should already have been removed")
AssocItemKind::MacCall(_) | AssocItemKind::DelegationMac(..) => {
span_bug!(item.span, "{item:#?} should already have been removed")
}
};
let vis = self.resolve_visibility(&item.vis);
@@ -1472,6 +1452,29 @@ pub(crate) fn brg_visit_assoc_item(&mut self, item: &'a AssocItem, ctxt: AssocCt
visit::walk_assoc_item(self, item, ctxt);
}
pub(crate) fn visit_assoc_item_mac_call(
&mut self,
item: &'a Item<AssocItemKind>,
ctxt: AssocCtxt,
) {
match ctxt {
AssocCtxt::Trait => {
self.visit_invoc_in_module(item.id);
}
AssocCtxt::Impl { .. } => {
let invoc_id = item.id.placeholder_to_expn_id();
if !self.r.glob_delegation_invoc_ids.contains(&invoc_id) {
self.r
.impl_unexpanded_invocations
.entry(self.r.invocation_parent(invoc_id))
.or_default()
.insert(invoc_id);
}
self.visit_invoc(item.id);
}
}
}
pub(crate) fn brg_visit_attribute(&mut self, attr: &'a ast::Attribute) {
if !attr.is_doc_comment() && attr::is_builtin_attr(attr) {
self.r
+1 -1
View File
@@ -378,7 +378,7 @@ fn visit_assoc_item(&mut self, i: &'a AssocItem, ctxt: visit::AssocCtxt) {
AssocItemKind::Type(box TyAlias { ident, .. }) => (*ident, DefKind::AssocTy),
AssocItemKind::MacCall(..) => {
self.visit_macro_invoc(i.id);
self.brg_visit_assoc_item(i, ctxt);
self.visit_assoc_item_mac_call(i, ctxt);
return;
}
AssocItemKind::DelegationMac(..) => {