mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Merge visit_expr, visit_pat and visit_ty
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user