From d67a5705479c15afe2f5ca2429cc88b2457234ea Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Tue, 10 Mar 2026 14:27:34 +0000 Subject: [PATCH] Merge visit_expr, visit_pat and visit_ty --- .../rustc_resolve/src/build_reduced_graph.rs | 16 ---------------- compiler/rustc_resolve/src/def_collector.rs | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index 92124f8ead24..43c548d99998 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -1371,23 +1371,7 @@ fn define_macro(&mut self, item: &ast::Item) -> MacroRulesScopeRef<'ra> { } } -macro_rules! method { - ($visit:ident: $ty:ty, $invoc:path, $walk:ident) => { - fn $visit(&mut self, node: &'a $ty) { - if let $invoc(..) = node.kind { - self.visit_invoc(node.id); - } else { - visit::$walk(self, node); - } - } - }; -} - impl<'a, 'ra, 'tcx> DefCollector<'a, 'ra, 'tcx> { - method!(visit_expr: ast::Expr, ast::ExprKind::MacCall, walk_expr); - method!(visit_pat: ast::Pat, ast::PatKind::MacCall, walk_pat); - method!(visit_ty: ast::Ty, ast::TyKind::MacCall, walk_ty); - pub(crate) fn brg_visit_item(&mut self, item: &'a Item) { let orig_module_scope = self.parent_scope.module; self.parent_scope.macro_rules = match item.kind { diff --git a/compiler/rustc_resolve/src/def_collector.rs b/compiler/rustc_resolve/src/def_collector.rs index e8ece893afd4..1834387de3fe 100644 --- a/compiler/rustc_resolve/src/def_collector.rs +++ b/compiler/rustc_resolve/src/def_collector.rs @@ -400,7 +400,10 @@ fn visit_assoc_item(&mut self, i: &'a AssocItem, ctxt: visit::AssocCtxt) { fn visit_pat(&mut self, pat: &'a Pat) { match pat.kind { - PatKind::MacCall(..) => self.visit_macro_invoc(pat.id), + PatKind::MacCall(..) => { + self.visit_macro_invoc(pat.id); + self.visit_invoc(pat.id); + } _ => visit::walk_pat(self, pat), } } @@ -434,7 +437,11 @@ fn visit_expr(&mut self, expr: &'a Expr) { debug!(?self.invocation_parent); let parent_def = match &expr.kind { - ExprKind::MacCall(..) => return self.visit_macro_invoc(expr.id), + ExprKind::MacCall(..) => { + self.visit_macro_invoc(expr.id); + self.visit_invoc(expr.id); + return; + } ExprKind::Closure(..) | ExprKind::Gen(..) => { self.create_def(expr.id, None, DefKind::Closure, expr.span) } @@ -486,7 +493,10 @@ fn visit_expr(&mut self, expr: &'a Expr) { fn visit_ty(&mut self, ty: &'a Ty) { match ty.kind { - TyKind::MacCall(..) => self.visit_macro_invoc(ty.id), + TyKind::MacCall(..) => { + self.visit_macro_invoc(ty.id); + self.visit_invoc(ty.id); + } TyKind::ImplTrait(opaque_id, _) => { let name = *self .r