@@ -16,17 +16,17 @@ use syntax::ast::{NodeId, CRATE_NODE_ID};
16
16
use syntax_pos:: Span ;
17
17
18
18
/// A Visitor that walks over the HIR and collects Nodes into a HIR map
19
- pub struct NodeCollector < ' ast > {
19
+ pub struct NodeCollector < ' hir > {
20
20
/// The crate
21
- pub krate : & ' ast Crate ,
21
+ pub krate : & ' hir Crate ,
22
22
/// The node map
23
- pub ( super ) map : Vec < MapEntry < ' ast > > ,
23
+ pub ( super ) map : Vec < MapEntry < ' hir > > ,
24
24
/// The parent of this node
25
25
pub parent_node : NodeId ,
26
26
}
27
27
28
- impl < ' ast > NodeCollector < ' ast > {
29
- pub fn root ( krate : & ' ast Crate ) -> NodeCollector < ' ast > {
28
+ impl < ' hir > NodeCollector < ' hir > {
29
+ pub fn root ( krate : & ' hir Crate ) -> NodeCollector < ' hir > {
30
30
let mut collector = NodeCollector {
31
31
krate : krate,
32
32
map : vec ! [ ] ,
@@ -37,16 +37,16 @@ impl<'ast> NodeCollector<'ast> {
37
37
collector
38
38
}
39
39
40
- fn insert_entry ( & mut self , id : NodeId , entry : MapEntry < ' ast > ) {
41
- debug ! ( "ast_map : {:?} => {:?}" , id, entry) ;
40
+ fn insert_entry ( & mut self , id : NodeId , entry : MapEntry < ' hir > ) {
41
+ debug ! ( "hir_map : {:?} => {:?}" , id, entry) ;
42
42
let len = self . map . len ( ) ;
43
43
if id. as_usize ( ) >= len {
44
44
self . map . extend ( repeat ( NotPresent ) . take ( id. as_usize ( ) - len + 1 ) ) ;
45
45
}
46
46
self . map [ id. as_usize ( ) ] = entry;
47
47
}
48
48
49
- fn insert ( & mut self , id : NodeId , node : Node < ' ast > ) {
49
+ fn insert ( & mut self , id : NodeId , node : Node < ' hir > ) {
50
50
let entry = MapEntry :: from_node ( self . parent_node , node) ;
51
51
self . insert_entry ( id, entry) ;
52
52
}
@@ -59,12 +59,12 @@ impl<'ast> NodeCollector<'ast> {
59
59
}
60
60
}
61
61
62
- impl < ' ast > Visitor < ' ast > for NodeCollector < ' ast > {
62
+ impl < ' hir > Visitor < ' hir > for NodeCollector < ' hir > {
63
63
/// Because we want to track parent items and so forth, enable
64
64
/// deep walking so that we walk nested items in the context of
65
65
/// their outer items.
66
66
67
- fn nested_visit_map < ' this > ( & ' this mut self ) -> NestedVisitorMap < ' this , ' ast > {
67
+ fn nested_visit_map < ' this > ( & ' this mut self ) -> NestedVisitorMap < ' this , ' hir > {
68
68
panic ! ( "visit_nested_xxx must be manually implemented in this visitor" )
69
69
}
70
70
@@ -85,7 +85,7 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
85
85
self . visit_body ( self . krate . body ( id) ) ;
86
86
}
87
87
88
- fn visit_item ( & mut self , i : & ' ast Item ) {
88
+ fn visit_item ( & mut self , i : & ' hir Item ) {
89
89
debug ! ( "visit_item: {:?}" , i) ;
90
90
91
91
self . insert ( i. id , NodeItem ( i) ) ;
@@ -104,39 +104,39 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
104
104
} ) ;
105
105
}
106
106
107
- fn visit_foreign_item ( & mut self , foreign_item : & ' ast ForeignItem ) {
107
+ fn visit_foreign_item ( & mut self , foreign_item : & ' hir ForeignItem ) {
108
108
self . insert ( foreign_item. id , NodeForeignItem ( foreign_item) ) ;
109
109
110
110
self . with_parent ( foreign_item. id , |this| {
111
111
intravisit:: walk_foreign_item ( this, foreign_item) ;
112
112
} ) ;
113
113
}
114
114
115
- fn visit_generics ( & mut self , generics : & ' ast Generics ) {
115
+ fn visit_generics ( & mut self , generics : & ' hir Generics ) {
116
116
for ty_param in generics. ty_params . iter ( ) {
117
117
self . insert ( ty_param. id , NodeTyParam ( ty_param) ) ;
118
118
}
119
119
120
120
intravisit:: walk_generics ( self , generics) ;
121
121
}
122
122
123
- fn visit_trait_item ( & mut self , ti : & ' ast TraitItem ) {
123
+ fn visit_trait_item ( & mut self , ti : & ' hir TraitItem ) {
124
124
self . insert ( ti. id , NodeTraitItem ( ti) ) ;
125
125
126
126
self . with_parent ( ti. id , |this| {
127
127
intravisit:: walk_trait_item ( this, ti) ;
128
128
} ) ;
129
129
}
130
130
131
- fn visit_impl_item ( & mut self , ii : & ' ast ImplItem ) {
131
+ fn visit_impl_item ( & mut self , ii : & ' hir ImplItem ) {
132
132
self . insert ( ii. id , NodeImplItem ( ii) ) ;
133
133
134
134
self . with_parent ( ii. id , |this| {
135
135
intravisit:: walk_impl_item ( this, ii) ;
136
136
} ) ;
137
137
}
138
138
139
- fn visit_pat ( & mut self , pat : & ' ast Pat ) {
139
+ fn visit_pat ( & mut self , pat : & ' hir Pat ) {
140
140
let node = if let PatKind :: Binding ( ..) = pat. node {
141
141
NodeLocal ( pat)
142
142
} else {
@@ -149,15 +149,15 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
149
149
} ) ;
150
150
}
151
151
152
- fn visit_expr ( & mut self , expr : & ' ast Expr ) {
152
+ fn visit_expr ( & mut self , expr : & ' hir Expr ) {
153
153
self . insert ( expr. id , NodeExpr ( expr) ) ;
154
154
155
155
self . with_parent ( expr. id , |this| {
156
156
intravisit:: walk_expr ( this, expr) ;
157
157
} ) ;
158
158
}
159
159
160
- fn visit_stmt ( & mut self , stmt : & ' ast Stmt ) {
160
+ fn visit_stmt ( & mut self , stmt : & ' hir Stmt ) {
161
161
let id = stmt. node . id ( ) ;
162
162
self . insert ( id, NodeStmt ( stmt) ) ;
163
163
@@ -166,40 +166,40 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
166
166
} ) ;
167
167
}
168
168
169
- fn visit_ty ( & mut self , ty : & ' ast Ty ) {
169
+ fn visit_ty ( & mut self , ty : & ' hir Ty ) {
170
170
self . insert ( ty. id , NodeTy ( ty) ) ;
171
171
172
172
self . with_parent ( ty. id , |this| {
173
173
intravisit:: walk_ty ( this, ty) ;
174
174
} ) ;
175
175
}
176
176
177
- fn visit_trait_ref ( & mut self , tr : & ' ast TraitRef ) {
177
+ fn visit_trait_ref ( & mut self , tr : & ' hir TraitRef ) {
178
178
self . insert ( tr. ref_id , NodeTraitRef ( tr) ) ;
179
179
180
180
self . with_parent ( tr. ref_id , |this| {
181
181
intravisit:: walk_trait_ref ( this, tr) ;
182
182
} ) ;
183
183
}
184
184
185
- fn visit_fn ( & mut self , fk : intravisit:: FnKind < ' ast > , fd : & ' ast FnDecl ,
185
+ fn visit_fn ( & mut self , fk : intravisit:: FnKind < ' hir > , fd : & ' hir FnDecl ,
186
186
b : BodyId , s : Span , id : NodeId ) {
187
187
assert_eq ! ( self . parent_node, id) ;
188
188
intravisit:: walk_fn ( self , fk, fd, b, s, id) ;
189
189
}
190
190
191
- fn visit_block ( & mut self , block : & ' ast Block ) {
191
+ fn visit_block ( & mut self , block : & ' hir Block ) {
192
192
self . insert ( block. id , NodeBlock ( block) ) ;
193
193
self . with_parent ( block. id , |this| {
194
194
intravisit:: walk_block ( this, block) ;
195
195
} ) ;
196
196
}
197
197
198
- fn visit_lifetime ( & mut self , lifetime : & ' ast Lifetime ) {
198
+ fn visit_lifetime ( & mut self , lifetime : & ' hir Lifetime ) {
199
199
self . insert ( lifetime. id , NodeLifetime ( lifetime) ) ;
200
200
}
201
201
202
- fn visit_vis ( & mut self , visibility : & ' ast Visibility ) {
202
+ fn visit_vis ( & mut self , visibility : & ' hir Visibility ) {
203
203
match * visibility {
204
204
Visibility :: Public |
205
205
Visibility :: Crate |
@@ -213,19 +213,19 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
213
213
}
214
214
}
215
215
216
- fn visit_macro_def ( & mut self , macro_def : & ' ast MacroDef ) {
216
+ fn visit_macro_def ( & mut self , macro_def : & ' hir MacroDef ) {
217
217
self . insert_entry ( macro_def. id , NotPresent ) ;
218
218
}
219
219
220
- fn visit_variant ( & mut self , v : & ' ast Variant , g : & ' ast Generics , item_id : NodeId ) {
220
+ fn visit_variant ( & mut self , v : & ' hir Variant , g : & ' hir Generics , item_id : NodeId ) {
221
221
let id = v. node . data . id ( ) ;
222
222
self . insert ( id, NodeVariant ( v) ) ;
223
223
self . with_parent ( id, |this| {
224
224
intravisit:: walk_variant ( this, v, g, item_id) ;
225
225
} ) ;
226
226
}
227
227
228
- fn visit_struct_field ( & mut self , field : & ' ast StructField ) {
228
+ fn visit_struct_field ( & mut self , field : & ' hir StructField ) {
229
229
self . insert ( field. id , NodeField ( field) ) ;
230
230
self . with_parent ( field. id , |this| {
231
231
intravisit:: walk_struct_field ( this, field) ;
0 commit comments