@@ -26,8 +26,9 @@ use metadata::cstore::iter_crate_data;
26
26
use syntax:: ast:: { Crate , def_id, MetaItem } ;
27
27
use syntax:: ast_util:: local_def;
28
28
use syntax:: attr:: AttrMetaMethods ;
29
- use syntax:: oldvisit:: { default_simple_visitor, mk_simple_visitor} ;
30
- use syntax:: oldvisit:: { SimpleVisitor , visit_crate} ;
29
+ use syntax:: ast:: { item} ;
30
+ use syntax:: visit;
31
+ use syntax:: visit:: Visitor ;
31
32
32
33
use std:: hashmap:: HashMap ;
33
34
@@ -297,6 +298,27 @@ struct LanguageItemCollector<'self> {
297
298
item_refs : HashMap < @str , uint > ,
298
299
}
299
300
301
+ struct LanguageItemVisitor < ' self > {
302
+ this : * mut LanguageItemCollector < ' self > ,
303
+ }
304
+
305
+ impl < ' self > Visitor < ( ) > for LanguageItemVisitor < ' self > {
306
+
307
+ fn visit_item ( & mut self , item : @item, _: ( ) ) {
308
+
309
+ for attribute in item. attrs . iter ( ) {
310
+ unsafe {
311
+ ( * self . this ) . match_and_collect_meta_item (
312
+ local_def ( item. id ) ,
313
+ attribute. node . value
314
+ ) ;
315
+ }
316
+ }
317
+
318
+ visit:: walk_item ( self , item, ( ) ) ;
319
+ }
320
+ }
321
+
300
322
impl < ' self > LanguageItemCollector < ' self > {
301
323
pub fn new < ' a > ( crate : & ' a Crate , session : Session )
302
324
-> LanguageItemCollector < ' a > {
@@ -410,19 +432,8 @@ impl<'self> LanguageItemCollector<'self> {
410
432
411
433
pub fn collect_local_language_items ( & mut self ) {
412
434
let this: * mut LanguageItemCollector = & mut * self ;
413
- visit_crate ( self . crate , ( ( ) , mk_simple_visitor ( @SimpleVisitor {
414
- visit_item : |item| {
415
- for attribute in item. attrs . iter ( ) {
416
- unsafe {
417
- ( * this) . match_and_collect_meta_item (
418
- local_def ( item. id ) ,
419
- attribute. node . value
420
- ) ;
421
- }
422
- }
423
- } ,
424
- .. * default_simple_visitor ( )
425
- } ) ) ) ;
435
+ let mut v = LanguageItemVisitor { this : this } ;
436
+ visit:: walk_crate ( & mut v, self . crate , ( ) ) ;
426
437
}
427
438
428
439
pub fn collect_external_language_items ( & mut self ) {
0 commit comments