@@ -61,10 +61,8 @@ pub fn print_ast_stats<'v>(krate: &'v ast::Crate, title: &str) {
6161impl < ' k > StatCollector < ' k > {
6262
6363 fn record < T > ( & mut self , label : & ' static str , id : Id , node : & T ) {
64- if id != Id :: None {
65- if !self . seen . insert ( id) {
66- return
67- }
64+ if id != Id :: None && !self . seen . insert ( id) {
65+ return
6866 }
6967
7068 let entry = self . data . entry ( label) . or_insert ( NodeData {
@@ -135,40 +133,46 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> {
135133 hir_visit:: walk_item ( self , i)
136134 }
137135
138- ///////////////////////////////////////////////////////////////////////////
139-
140136 fn visit_mod ( & mut self , m : & ' v hir:: Mod , _s : Span , n : NodeId ) {
141137 self . record ( "Mod" , Id :: None , m) ;
142138 hir_visit:: walk_mod ( self , m, n)
143139 }
140+
144141 fn visit_foreign_item ( & mut self , i : & ' v hir:: ForeignItem ) {
145142 self . record ( "ForeignItem" , Id :: Node ( i. id ) , i) ;
146143 hir_visit:: walk_foreign_item ( self , i)
147144 }
145+
148146 fn visit_local ( & mut self , l : & ' v hir:: Local ) {
149147 self . record ( "Local" , Id :: Node ( l. id ) , l) ;
150148 hir_visit:: walk_local ( self , l)
151149 }
150+
152151 fn visit_block ( & mut self , b : & ' v hir:: Block ) {
153152 self . record ( "Block" , Id :: Node ( b. id ) , b) ;
154153 hir_visit:: walk_block ( self , b)
155154 }
155+
156156 fn visit_stmt ( & mut self , s : & ' v hir:: Stmt ) {
157157 self . record ( "Stmt" , Id :: Node ( s. node . id ( ) ) , s) ;
158158 hir_visit:: walk_stmt ( self , s)
159159 }
160+
160161 fn visit_arm ( & mut self , a : & ' v hir:: Arm ) {
161162 self . record ( "Arm" , Id :: None , a) ;
162163 hir_visit:: walk_arm ( self , a)
163164 }
165+
164166 fn visit_pat ( & mut self , p : & ' v hir:: Pat ) {
165167 self . record ( "Pat" , Id :: Node ( p. id ) , p) ;
166168 hir_visit:: walk_pat ( self , p)
167169 }
170+
168171 fn visit_decl ( & mut self , d : & ' v hir:: Decl ) {
169172 self . record ( "Decl" , Id :: None , d) ;
170173 hir_visit:: walk_decl ( self , d)
171174 }
175+
172176 fn visit_expr ( & mut self , ex : & ' v hir:: Expr ) {
173177 self . record ( "Expr" , Id :: Node ( ex. id ) , ex) ;
174178 hir_visit:: walk_expr ( self , ex)
@@ -198,6 +202,7 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> {
198202 self . record ( "TraitItem" , Id :: Node ( ti. id ) , ti) ;
199203 hir_visit:: walk_trait_item ( self , ti)
200204 }
205+
201206 fn visit_impl_item ( & mut self , ii : & ' v hir:: ImplItem ) {
202207 self . record ( "ImplItem" , Id :: Node ( ii. id ) , ii) ;
203208 hir_visit:: walk_impl_item ( self , ii)
@@ -220,31 +225,38 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> {
220225 self . record ( "Variant" , Id :: None , v) ;
221226 hir_visit:: walk_variant ( self , v, g, item_id)
222227 }
228+
223229 fn visit_lifetime ( & mut self , lifetime : & ' v hir:: Lifetime ) {
224230 self . record ( "Lifetime" , Id :: Node ( lifetime. id ) , lifetime) ;
225231 hir_visit:: walk_lifetime ( self , lifetime)
226232 }
233+
227234 fn visit_qpath ( & mut self , qpath : & ' v hir:: QPath , id : hir:: HirId , span : Span ) {
228235 self . record ( "QPath" , Id :: None , qpath) ;
229236 hir_visit:: walk_qpath ( self , qpath, id, span)
230237 }
238+
231239 fn visit_path ( & mut self , path : & ' v hir:: Path , _id : hir:: HirId ) {
232240 self . record ( "Path" , Id :: None , path) ;
233241 hir_visit:: walk_path ( self , path)
234242 }
243+
235244 fn visit_path_segment ( & mut self ,
236245 path_span : Span ,
237246 path_segment : & ' v hir:: PathSegment ) {
238247 self . record ( "PathSegment" , Id :: None , path_segment) ;
239248 hir_visit:: walk_path_segment ( self , path_span, path_segment)
240249 }
250+
241251 fn visit_assoc_type_binding ( & mut self , type_binding : & ' v hir:: TypeBinding ) {
242252 self . record ( "TypeBinding" , Id :: Node ( type_binding. id ) , type_binding) ;
243253 hir_visit:: walk_assoc_type_binding ( self , type_binding)
244254 }
255+
245256 fn visit_attribute ( & mut self , attr : & ' v ast:: Attribute ) {
246257 self . record ( "Attribute" , Id :: Attr ( attr. id ) , attr) ;
247258 }
259+
248260 fn visit_macro_def ( & mut self , macro_def : & ' v hir:: MacroDef ) {
249261 self . record ( "MacroDef" , Id :: Node ( macro_def. id ) , macro_def) ;
250262 hir_visit:: walk_macro_def ( self , macro_def)
0 commit comments