Skip to content

Commit 189d901

Browse files
committed
---
yaml --- r: 232539 b: refs/heads/try c: fc9ecae h: refs/heads/master i: 232537: e3d012c 232535: 6486113 v: v3
1 parent 79eabe9 commit 189d901

File tree

2 files changed

+18
-31
lines changed

2 files changed

+18
-31
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: edeb4f1c86cbf6af8ef9874d4b3af50f721ea1b8
33
refs/heads/snap-stage3: 1af31d4974e33027a68126fa5a5a3c2c6491824f
4-
refs/heads/try: fdba872944675a2c2aa146ab3caadbad14452e97
4+
refs/heads/try: fc9ecae4442ba39ed1474a129d10bd37c7fdab00
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
66
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
77
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try/src/librustc_resolve/lib.rs

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,17 @@ mod record_exports;
108108
mod build_reduced_graph;
109109
mod resolve_imports;
110110

111+
// Perform the callback, not walking deeper if the return is true
112+
macro_rules! execute_callback {
113+
($node: expr, $walker: expr) => (
114+
if let Some(ref callback) = $walker.callback {
115+
if callback($node, &mut $walker.resolved) {
116+
return;
117+
}
118+
}
119+
)
120+
}
121+
111122
pub enum ResolutionError<'a> {
112123
/// error E0401: can't use type parameters from outer function
113124
TypeParametersFromOuterFunction,
@@ -445,38 +456,22 @@ enum NameDefinition {
445456

446457
impl<'a, 'v, 'tcx> Visitor<'v> for Resolver<'a, 'tcx> {
447458
fn visit_item(&mut self, item: &Item) {
448-
if let Some(ref callback) = self.callback {
449-
if callback(ast_map::Node::NodeItem(item), &mut self.resolved) {
450-
return;
451-
}
452-
}
459+
execute_callback!(ast_map::Node::NodeItem(item), self);
453460
self.resolve_item(item);
454461
}
455462
fn visit_arm(&mut self, arm: &Arm) {
456463
self.resolve_arm(arm);
457464
}
458465
fn visit_block(&mut self, block: &Block) {
459-
if let Some(ref callback) = self.callback {
460-
if callback(ast_map::Node::NodeBlock(block), &mut self.resolved) {
461-
return;
462-
}
463-
}
466+
execute_callback!(ast_map::Node::NodeBlock(block), self);
464467
self.resolve_block(block);
465468
}
466469
fn visit_expr(&mut self, expr: &Expr) {
467-
if let Some(ref callback) = self.callback {
468-
if callback(ast_map::Node::NodeExpr(expr), &mut self.resolved) {
469-
return;
470-
}
471-
}
470+
execute_callback!(ast_map::Node::NodeExpr(expr), self);
472471
self.resolve_expr(expr);
473472
}
474473
fn visit_local(&mut self, local: &Local) {
475-
if let Some(ref callback) = self.callback {
476-
if callback(ast_map::Node::NodeLocal(&*local.pat), &mut self.resolved) {
477-
return;
478-
}
479-
}
474+
execute_callback!(ast_map::Node::NodeLocal(&*local.pat), self);
480475
self.resolve_local(local);
481476
}
482477
fn visit_ty(&mut self, ty: &Ty) {
@@ -495,11 +490,7 @@ impl<'a, 'v, 'tcx> Visitor<'v> for Resolver<'a, 'tcx> {
495490
visit::walk_poly_trait_ref(self, tref, m);
496491
}
497492
fn visit_variant(&mut self, variant: &ast::Variant, generics: &Generics) {
498-
if let Some(ref callback) = self.callback {
499-
if callback(ast_map::Node::NodeVariant(variant), &mut self.resolved) {
500-
return;
501-
}
502-
}
493+
execute_callback!(ast_map::Node::NodeVariant(variant), self);
503494
if let Some(ref dis_expr) = variant.node.disr_expr {
504495
// resolve the discriminator expr as a constant
505496
self.with_constant_rib(|this| {
@@ -523,11 +514,7 @@ impl<'a, 'v, 'tcx> Visitor<'v> for Resolver<'a, 'tcx> {
523514
}
524515
}
525516
fn visit_foreign_item(&mut self, foreign_item: &ast::ForeignItem) {
526-
if let Some(ref callback) = self.callback {
527-
if callback(ast_map::Node::NodeForeignItem(foreign_item), &mut self.resolved) {
528-
return;
529-
}
530-
}
517+
execute_callback!(ast_map::Node::NodeForeignItem(foreign_item), self);
531518
let type_parameters = match foreign_item.node {
532519
ForeignItemFn(_, ref generics) => {
533520
HasTypeParameters(generics, FnSpace, ItemRibKind)

0 commit comments

Comments
 (0)