diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-26 11:01:39 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-26 11:01:39 +0200 |
| commit | ebfbbe294e87f08516ab060633f6af028943ead0 (patch) | |
| tree | cc4394972a6e9e90cff1cb54c4082a38379c0263 /src | |
| parent | bdd188d003b56b55f534ad692ea1b17ca569b6fe (diff) | |
| download | rust-ebfbbe294e87f08516ab060633f6af028943ead0.tar.gz rust-ebfbbe294e87f08516ab060633f6af028943ead0.zip | |
Port creader.rs from oldvisit to <V:Visitor> trait API.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/metadata/creader.rs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/librustc/metadata/creader.rs b/src/librustc/metadata/creader.rs index c8c4a396c87..942d5f1373d 100644 --- a/src/librustc/metadata/creader.rs +++ b/src/librustc/metadata/creader.rs @@ -25,7 +25,7 @@ use syntax::codemap::{span, dummy_sp}; use syntax::diagnostic::span_handler; use syntax::parse::token; use syntax::parse::token::ident_interner; -use syntax::oldvisit; +use syntax::visit; // Traverses an AST, reading all the information about use'd crates and extern // libraries necessary for later resolving, typechecking, linking, etc. @@ -46,17 +46,25 @@ pub fn read_crates(diag: @mut span_handler, next_crate_num: 1, intr: intr }; - let v = - oldvisit::mk_simple_visitor(@oldvisit::SimpleVisitor { - visit_view_item: |a| visit_view_item(e, a), - visit_item: |a| visit_item(e, a), - .. *oldvisit::default_simple_visitor()}); + let mut v = ReadCrateVisitor{ e:e }; visit_crate(e, crate); - oldvisit::visit_crate(crate, ((), v)); + visit::walk_crate(&mut v, crate, ()); dump_crates(*e.crate_cache); warn_if_multiple_versions(e, diag, *e.crate_cache); } +struct ReadCrateVisitor { e:@mut Env } +impl visit::Visitor<()> for ReadCrateVisitor { + fn visit_view_item(&mut self, a:&ast::view_item, _:()) { + visit_view_item(self.e, a); + visit::walk_view_item(self, a, ()); + } + fn visit_item(&mut self, a:@ast::item, _:()) { + visit_item(self.e, a); + visit::walk_item(self, a, ()); + } +} + #[deriving(Clone)] struct cache_entry { cnum: int, |
