diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-14 16:56:28 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-15 04:09:19 +0200 |
| commit | 3281d58a5d6b719219c451b490d2758a8770e16a (patch) | |
| tree | e713b5a1f264ff9208729fd19d2660e43168730f | |
| parent | 92907216258e26d70cd49371f74e6bab511b5332 (diff) | |
| download | rust-3281d58a5d6b719219c451b490d2758a8770e16a.tar.gz rust-3281d58a5d6b719219c451b490d2758a8770e16a.zip | |
Ported typeck::collect from oldvisit to <V:Visitor> trait API.
| -rw-r--r-- | src/librustc/middle/typeck/collect.rs | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs index b5516fcc8eb..7678a12b78a 100644 --- a/src/librustc/middle/typeck/collect.rs +++ b/src/librustc/middle/typeck/collect.rs @@ -56,11 +56,26 @@ use syntax::ast_util::{local_def, split_trait_methods}; use syntax::codemap::span; use syntax::codemap; use syntax::print::pprust::{path_to_str, explicit_self_to_str}; -use syntax::oldvisit; +use syntax::visit; use syntax::opt_vec::OptVec; use syntax::opt_vec; use syntax::parse::token::special_idents; +struct CollectItemTypesVisitor { + ccx: @mut CrateCtxt +} + +impl visit::Visitor<()> for CollectItemTypesVisitor { + fn visit_item(&mut self, i:@ast::item, _:()) { + convert(self.ccx, i); + visit::walk_item(self, i, ()); + } + fn visit_foreign_item(&mut self, i:@ast::foreign_item, _:()) { + convert_foreign(self.ccx, i); + visit::walk_foreign_item(self, i, ()); + } +} + pub fn collect_item_types(ccx: @mut CrateCtxt, crate: &ast::Crate) { fn collect_intrinsic_type(ccx: &CrateCtxt, lang_item: ast::def_id) { @@ -76,13 +91,8 @@ pub fn collect_item_types(ccx: @mut CrateCtxt, crate: &ast::Crate) { Some(id) => { collect_intrinsic_type(ccx, id); } None => {} } - oldvisit::visit_crate( - crate, ((), - oldvisit::mk_simple_visitor(@oldvisit::SimpleVisitor { - visit_item: |a| convert(ccx, a), - visit_foreign_item: |a|convert_foreign(ccx, a), - .. *oldvisit::default_simple_visitor() - }))); + let mut visitor = CollectItemTypesVisitor{ ccx: ccx }; + visit::walk_crate(&mut visitor, crate, ()); } pub trait ToTy { |
