Skip to content

Commit 9e64088

Browse files
committed
remove FIXME(rust-lang#37712) and implement ItemLikeVisitor instead of Visitor
1 parent b539764 commit 9e64088

File tree

2 files changed

+18
-35
lines changed

2 files changed

+18
-35
lines changed

src/librustc_passes/static_recursion.rs

+12-20
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,13 @@ struct CheckCrateVisitor<'a, 'hir: 'a> {
3333
detected_recursive_ids: NodeSet,
3434
}
3535

36-
impl<'a, 'hir: 'a> Visitor<'hir> for CheckCrateVisitor<'a, 'hir> {
37-
fn nested_visit_map<'this>(&'this mut self) -> NestedVisitorMap<'this, 'hir> {
38-
NestedVisitorMap::None
39-
}
40-
41-
fn visit_item(&mut self, it: &'hir hir::Item) {
42-
match it.node {
36+
impl<'a, 'hir: 'a> hir::itemlikevisit::ItemLikeVisitor<'hir> for CheckCrateVisitor<'a, 'hir> {
37+
fn visit_item(&mut self, item: &'hir hir::Item) {
38+
match item.node {
4339
hir::ItemStatic(..) |
4440
hir::ItemConst(..) => {
4541
let mut recursion_visitor = CheckItemRecursionVisitor::new(self);
46-
recursion_visitor.visit_item(it);
42+
recursion_visitor.visit_item(item);
4743
}
4844
hir::ItemEnum(ref enum_def, ref generics) => {
4945
// We could process the whole enum, but handling the variants
@@ -53,37 +49,34 @@ impl<'a, 'hir: 'a> Visitor<'hir> for CheckCrateVisitor<'a, 'hir> {
5349
if let Some(_) = variant.node.disr_expr {
5450
let mut recursion_visitor = CheckItemRecursionVisitor::new(self);
5551
recursion_visitor.populate_enum_discriminants(enum_def);
56-
recursion_visitor.visit_variant(variant, generics, it.id);
52+
recursion_visitor.visit_variant(variant, generics, item.id);
5753
}
5854
}
5955
}
6056
_ => {}
6157
}
62-
intravisit::walk_item(self, it)
6358
}
6459

65-
fn visit_trait_item(&mut self, ti: &'hir hir::TraitItem) {
66-
match ti.node {
60+
fn visit_trait_item(&mut self, trait_item: &'hir hir::TraitItem) {
61+
match trait_item.node {
6762
hir::TraitItemKind::Const(_, ref default) => {
6863
if let Some(_) = *default {
6964
let mut recursion_visitor = CheckItemRecursionVisitor::new(self);
70-
recursion_visitor.visit_trait_item(ti);
65+
recursion_visitor.visit_trait_item(trait_item);
7166
}
7267
}
7368
_ => {}
7469
}
75-
intravisit::walk_trait_item(self, ti)
7670
}
7771

78-
fn visit_impl_item(&mut self, ii: &'hir hir::ImplItem) {
79-
match ii.node {
72+
fn visit_impl_item(&mut self, impl_item: &'hir hir::ImplItem) {
73+
match impl_item.node {
8074
hir::ImplItemKind::Const(..) => {
8175
let mut recursion_visitor = CheckItemRecursionVisitor::new(self);
82-
recursion_visitor.visit_impl_item(ii);
76+
recursion_visitor.visit_impl_item(impl_item);
8377
}
8478
_ => {}
8579
}
86-
intravisit::walk_impl_item(self, ii)
8780
}
8881
}
8982

@@ -97,8 +90,7 @@ pub fn check_crate<'hir>(sess: &Session, hir_map: &hir_map::Map<'hir>)
9790
detected_recursive_ids: NodeSet(),
9891
};
9992
sess.track_errors(|| {
100-
// FIXME(#37712) could use ItemLikeVisitor if trait items were item-like
101-
hir_map.krate().visit_all_item_likes(&mut visitor.as_deep_visitor());
93+
hir_map.krate().visit_all_item_likes(&mut visitor);
10294
})
10395
}
10496

src/librustc_trans_utils/symbol_names_test.rs

+6-15
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
//! paths etc in all kinds of annoying scenarios.
1616
1717
use rustc::hir;
18-
use rustc::hir::intravisit::{self, Visitor, NestedVisitorMap};
1918
use rustc::ty::TyCtxt;
2019
use syntax::ast;
2120

@@ -34,8 +33,7 @@ pub fn report_symbol_names<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
3433

3534
tcx.dep_graph.with_ignore(|| {
3635
let mut visitor = SymbolNamesTest { tcx: tcx };
37-
// FIXME(#37712) could use ItemLikeVisitor if trait items were item-like
38-
tcx.hir.krate().visit_all_item_likes(&mut visitor.as_deep_visitor());
36+
tcx.hir.krate().visit_all_item_likes(&mut visitor);
3937
})
4038
}
4139

@@ -66,23 +64,16 @@ impl<'a, 'tcx> SymbolNamesTest<'a, 'tcx> {
6664
}
6765
}
6866

69-
impl<'a, 'tcx> Visitor<'tcx> for SymbolNamesTest<'a, 'tcx> {
70-
fn nested_visit_map<'this>(&'this mut self) -> NestedVisitorMap<'this, 'tcx> {
71-
NestedVisitorMap::None
72-
}
73-
67+
impl<'a, 'tcx> hir::itemlikevisit::ItemLikeVisitor<'tcx> for SymbolNamesTest<'a, 'tcx> {
7468
fn visit_item(&mut self, item: &'tcx hir::Item) {
7569
self.process_attrs(item.id);
76-
intravisit::walk_item(self, item);
7770
}
7871

79-
fn visit_trait_item(&mut self, ti: &'tcx hir::TraitItem) {
80-
self.process_attrs(ti.id);
81-
intravisit::walk_trait_item(self, ti)
72+
fn visit_trait_item(&mut self, trait_item: &'tcx hir::TraitItem) {
73+
self.process_attrs(trait_item.id);
8274
}
8375

84-
fn visit_impl_item(&mut self, ii: &'tcx hir::ImplItem) {
85-
self.process_attrs(ii.id);
86-
intravisit::walk_impl_item(self, ii)
76+
fn visit_impl_item(&mut self, impl_item: &'tcx hir::ImplItem) {
77+
self.process_attrs(impl_item.id);
8778
}
8879
}

0 commit comments

Comments
 (0)