From 3281d58a5d6b719219c451b490d2758a8770e16a Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Wed, 14 Aug 2013 16:56:28 +0200 Subject: [PATCH] Ported typeck::collect from oldvisit to trait API. --- src/librustc/middle/typeck/collect.rs | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs index b5516fcc8eba..7678a12b78a5 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 {