@@ -56,11 +56,26 @@ use syntax::ast_util::{local_def, split_trait_methods};
56
56
use syntax:: codemap:: span;
57
57
use syntax:: codemap;
58
58
use syntax:: print:: pprust:: { path_to_str, explicit_self_to_str} ;
59
- use syntax:: oldvisit ;
59
+ use syntax:: visit ;
60
60
use syntax:: opt_vec:: OptVec ;
61
61
use syntax:: opt_vec;
62
62
use syntax:: parse:: token:: special_idents;
63
63
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
+
64
79
pub fn collect_item_types ( ccx : @mut CrateCtxt , crate : & ast:: Crate ) {
65
80
fn collect_intrinsic_type ( ccx : & CrateCtxt ,
66
81
lang_item : ast:: def_id ) {
@@ -76,13 +91,8 @@ pub fn collect_item_types(ccx: @mut CrateCtxt, crate: &ast::Crate) {
76
91
Some ( id) => { collect_intrinsic_type ( ccx, id) ; } None => { }
77
92
}
78
93
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 , ( ) ) ;
86
96
}
87
97
88
98
pub trait ToTy {
0 commit comments