about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2013-08-14 16:56:28 +0200
committerFelix S. Klock II <pnkfelix@pnkfx.org>2013-08-15 04:09:19 +0200
commit3281d58a5d6b719219c451b490d2758a8770e16a (patch)
treee713b5a1f264ff9208729fd19d2660e43168730f
parent92907216258e26d70cd49371f74e6bab511b5332 (diff)
downloadrust-3281d58a5d6b719219c451b490d2758a8770e16a.tar.gz
rust-3281d58a5d6b719219c451b490d2758a8770e16a.zip
Ported typeck::collect from oldvisit to <V:Visitor> trait API.
-rw-r--r--src/librustc/middle/typeck/collect.rs26
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 {