Skip to content

Commit e14562d

Browse files
committed
Rework the IdVisitor so that it only visits item contents (and doesn't
visit nested items). This is what all clients wanted anyhow.
1 parent 25727d7 commit e14562d

File tree

4 files changed

+13
-34
lines changed

4 files changed

+13
-34
lines changed

src/librustc/lint/context.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,6 @@ impl<'a> EarlyContext<'a> {
555555
{
556556
let mut v = ast_util::IdVisitor {
557557
operation: self,
558-
pass_through_items: false,
559558
visited_outermost: false,
560559
};
561560
f(&mut v);
@@ -583,11 +582,7 @@ impl<'a, 'tcx> LateContext<'a, 'tcx> {
583582
fn visit_ids<F>(&mut self, f: F)
584583
where F: FnOnce(&mut util::IdVisitor<LateContext>)
585584
{
586-
let mut v = util::IdVisitor {
587-
operation: self,
588-
pass_through_items: false,
589-
visited_outermost: false,
590-
};
585+
let mut v = util::IdVisitor::new(self);
591586
f(&mut v);
592587
}
593588
}

src/librustc/metadata/inline.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,7 @@ impl InlinedItem {
4848
}
4949

5050
pub fn visit_ids<O: IdVisitingOperation>(&self, operation: &mut O) {
51-
let mut id_visitor = IdVisitor {
52-
operation: operation,
53-
pass_through_items: true,
54-
visited_outermost: false,
55-
};
51+
let mut id_visitor = IdVisitor::new(operation);
5652
self.visit(&mut id_visitor);
5753
}
5854

src/librustc/middle/check_match.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -485,11 +485,7 @@ impl<'a, 'tcx> Folder for StaticInliner<'a, 'tcx> {
485485
renaming_map: renaming_map,
486486
};
487487

488-
let mut id_visitor = front_util::IdVisitor {
489-
operation: &mut renaming_recorder,
490-
pass_through_items: true,
491-
visited_outermost: false,
492-
};
488+
let mut id_visitor = front_util::IdVisitor::new(&mut renaming_recorder);
493489

494490
id_visitor.visit_expr(const_expr);
495491
}

src/libsyntax/ast_util.rs

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,6 @@ pub trait IdVisitingOperation {
289289
290290
pub struct IdVisitor<'a, O:'a> {
291291
pub operation: &'a mut O,
292-
pub pass_through_items: bool,
293292
pub visited_outermost: bool,
294293
}
295294

@@ -319,12 +318,10 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> {
319318
}
320319

321320
fn visit_item(&mut self, item: &Item) {
322-
if !self.pass_through_items {
323-
if self.visited_outermost {
324-
return
325-
} else {
326-
self.visited_outermost = true
327-
}
321+
if self.visited_outermost {
322+
return
323+
} else {
324+
self.visited_outermost = true
328325
}
329326

330327
self.operation.visit_id(item.id);
@@ -390,12 +387,10 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> {
390387
block: &'v Block,
391388
span: Span,
392389
node_id: NodeId) {
393-
if !self.pass_through_items {
394-
match function_kind {
395-
FnKind::Method(..) if self.visited_outermost => return,
396-
FnKind::Method(..) => self.visited_outermost = true,
397-
_ => {}
398-
}
390+
match function_kind {
391+
FnKind::Method(..) if self.visited_outermost => return,
392+
FnKind::Method(..) => self.visited_outermost = true,
393+
_ => {}
399394
}
400395

401396
self.operation.visit_id(node_id);
@@ -420,10 +415,8 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> {
420415
block,
421416
span);
422417

423-
if !self.pass_through_items {
424-
if let FnKind::Method(..) = function_kind {
425-
self.visited_outermost = false;
426-
}
418+
if let FnKind::Method(..) = function_kind {
419+
self.visited_outermost = false;
427420
}
428421
}
429422

@@ -497,7 +490,6 @@ pub fn compute_id_range_for_fn_body(fk: FnKind,
497490
let mut visitor = IdRangeComputingVisitor::new();
498491
let mut id_visitor = IdVisitor {
499492
operation: &mut visitor,
500-
pass_through_items: false,
501493
visited_outermost: false,
502494
};
503495
id_visitor.visit_fn(fk, decl, body, sp, id);

0 commit comments

Comments
 (0)