@@ -33,17 +33,13 @@ struct CheckCrateVisitor<'a, 'hir: 'a> {
33
33
detected_recursive_ids : NodeSet ,
34
34
}
35
35
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 {
43
39
hir:: ItemStatic ( ..) |
44
40
hir:: ItemConst ( ..) => {
45
41
let mut recursion_visitor = CheckItemRecursionVisitor :: new ( self ) ;
46
- recursion_visitor. visit_item ( it ) ;
42
+ recursion_visitor. visit_item ( item ) ;
47
43
}
48
44
hir:: ItemEnum ( ref enum_def, ref generics) => {
49
45
// We could process the whole enum, but handling the variants
@@ -53,37 +49,34 @@ impl<'a, 'hir: 'a> Visitor<'hir> for CheckCrateVisitor<'a, 'hir> {
53
49
if let Some ( _) = variant. node . disr_expr {
54
50
let mut recursion_visitor = CheckItemRecursionVisitor :: new ( self ) ;
55
51
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 ) ;
57
53
}
58
54
}
59
55
}
60
56
_ => { }
61
57
}
62
- intravisit:: walk_item ( self , it)
63
58
}
64
59
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 {
67
62
hir:: TraitItemKind :: Const ( _, ref default) => {
68
63
if let Some ( _) = * default {
69
64
let mut recursion_visitor = CheckItemRecursionVisitor :: new ( self ) ;
70
- recursion_visitor. visit_trait_item ( ti ) ;
65
+ recursion_visitor. visit_trait_item ( trait_item ) ;
71
66
}
72
67
}
73
68
_ => { }
74
69
}
75
- intravisit:: walk_trait_item ( self , ti)
76
70
}
77
71
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 {
80
74
hir:: ImplItemKind :: Const ( ..) => {
81
75
let mut recursion_visitor = CheckItemRecursionVisitor :: new ( self ) ;
82
- recursion_visitor. visit_impl_item ( ii ) ;
76
+ recursion_visitor. visit_impl_item ( impl_item ) ;
83
77
}
84
78
_ => { }
85
79
}
86
- intravisit:: walk_impl_item ( self , ii)
87
80
}
88
81
}
89
82
@@ -97,8 +90,7 @@ pub fn check_crate<'hir>(sess: &Session, hir_map: &hir_map::Map<'hir>)
97
90
detected_recursive_ids : NodeSet ( ) ,
98
91
} ;
99
92
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) ;
102
94
} )
103
95
}
104
96
0 commit comments