Skip to content

Commit ebfbbe2

Browse files
committed
Port creader.rs from oldvisit to <V:Visitor> trait API.
1 parent bdd188d commit ebfbbe2

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/librustc/metadata/creader.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use syntax::codemap::{span, dummy_sp};
2525
use syntax::diagnostic::span_handler;
2626
use syntax::parse::token;
2727
use syntax::parse::token::ident_interner;
28-
use syntax::oldvisit;
28+
use syntax::visit;
2929

3030
// Traverses an AST, reading all the information about use'd crates and extern
3131
// libraries necessary for later resolving, typechecking, linking, etc.
@@ -46,17 +46,25 @@ pub fn read_crates(diag: @mut span_handler,
4646
next_crate_num: 1,
4747
intr: intr
4848
};
49-
let v =
50-
oldvisit::mk_simple_visitor(@oldvisit::SimpleVisitor {
51-
visit_view_item: |a| visit_view_item(e, a),
52-
visit_item: |a| visit_item(e, a),
53-
.. *oldvisit::default_simple_visitor()});
49+
let mut v = ReadCrateVisitor{ e:e };
5450
visit_crate(e, crate);
55-
oldvisit::visit_crate(crate, ((), v));
51+
visit::walk_crate(&mut v, crate, ());
5652
dump_crates(*e.crate_cache);
5753
warn_if_multiple_versions(e, diag, *e.crate_cache);
5854
}
5955

56+
struct ReadCrateVisitor { e:@mut Env }
57+
impl visit::Visitor<()> for ReadCrateVisitor {
58+
fn visit_view_item(&mut self, a:&ast::view_item, _:()) {
59+
visit_view_item(self.e, a);
60+
visit::walk_view_item(self, a, ());
61+
}
62+
fn visit_item(&mut self, a:@ast::item, _:()) {
63+
visit_item(self.e, a);
64+
visit::walk_item(self, a, ());
65+
}
66+
}
67+
6068
#[deriving(Clone)]
6169
struct cache_entry {
6270
cnum: int,

0 commit comments

Comments
 (0)