Skip to content

Commit 3281d58

Browse files
committed
Ported typeck::collect from oldvisit to <V:Visitor> trait API.
1 parent 9290721 commit 3281d58

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/librustc/middle/typeck/collect.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,26 @@ use syntax::ast_util::{local_def, split_trait_methods};
5656
use syntax::codemap::span;
5757
use syntax::codemap;
5858
use syntax::print::pprust::{path_to_str, explicit_self_to_str};
59-
use syntax::oldvisit;
59+
use syntax::visit;
6060
use syntax::opt_vec::OptVec;
6161
use syntax::opt_vec;
6262
use syntax::parse::token::special_idents;
6363

64+
struct CollectItemTypesVisitor {
65+
ccx: @mut CrateCtxt
66+
}
67+
68+
impl visit::Visitor<()> for CollectItemTypesVisitor {
69+
fn visit_item(&mut self, i:@ast::item, _:()) {
70+
convert(self.ccx, i);
71+
visit::walk_item(self, i, ());
72+
}
73+
fn visit_foreign_item(&mut self, i:@ast::foreign_item, _:()) {
74+
convert_foreign(self.ccx, i);
75+
visit::walk_foreign_item(self, i, ());
76+
}
77+
}
78+
6479
pub fn collect_item_types(ccx: @mut CrateCtxt, crate: &ast::Crate) {
6580
fn collect_intrinsic_type(ccx: &CrateCtxt,
6681
lang_item: ast::def_id) {
@@ -76,13 +91,8 @@ pub fn collect_item_types(ccx: @mut CrateCtxt, crate: &ast::Crate) {
7691
Some(id) => { collect_intrinsic_type(ccx, id); } None => {}
7792
}
7893

79-
oldvisit::visit_crate(
80-
crate, ((),
81-
oldvisit::mk_simple_visitor(@oldvisit::SimpleVisitor {
82-
visit_item: |a| convert(ccx, a),
83-
visit_foreign_item: |a|convert_foreign(ccx, a),
84-
.. *oldvisit::default_simple_visitor()
85-
})));
94+
let mut visitor = CollectItemTypesVisitor{ ccx: ccx };
95+
visit::walk_crate(&mut visitor, crate, ());
8696
}
8797

8898
pub trait ToTy {

0 commit comments

Comments
 (0)