Skip to content

Commit 863aac0

Browse files
committed
ported lang_items from oldvisit to <V:Visitor> trait.
1 parent 5c802a6 commit 863aac0

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

src/librustc/middle/lang_items.rs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ use metadata::cstore::iter_crate_data;
2626
use syntax::ast::{Crate, def_id, MetaItem};
2727
use syntax::ast_util::local_def;
2828
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;
3132

3233
use std::hashmap::HashMap;
3334

@@ -297,6 +298,27 @@ struct LanguageItemCollector<'self> {
297298
item_refs: HashMap<@str, uint>,
298299
}
299300

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+
300322
impl<'self> LanguageItemCollector<'self> {
301323
pub fn new<'a>(crate: &'a Crate, session: Session)
302324
-> LanguageItemCollector<'a> {
@@ -410,19 +432,8 @@ impl<'self> LanguageItemCollector<'self> {
410432

411433
pub fn collect_local_language_items(&mut self) {
412434
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, ());
426437
}
427438

428439
pub fn collect_external_language_items(&mut self) {

0 commit comments

Comments
 (0)