Skip to content

Commit 8069ec1

Browse files
committed
---
yaml --- r: 227477 b: refs/heads/auto c: fc9ecae h: refs/heads/master i: 227475: a798630 v: v3
1 parent 8e0b0c8 commit 8069ec1

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
@@ -8,7 +8,7 @@ refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
88
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
99
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1010
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
11-
refs/heads/auto: fdba872944675a2c2aa146ab3caadbad14452e97
11+
refs/heads/auto: fc9ecae4442ba39ed1474a129d10bd37c7fdab00
1212
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1313
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336
1414
refs/tags/0.2: 1754d02027f2924bed83b0160ee340c7f41d5ea1

branches/auto/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)