Merge visit_expr, visit_pat and visit_ty

This commit is contained in:
Oli Scherer
2026-03-10 14:27:34 +00:00
committed by Oli Scherer
parent f69d719e1c
commit d67a570547
2 changed files with 13 additions and 19 deletions
@@ -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 {
+13 -3
View File
@@ -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