@@ -31,7 +31,9 @@ type ast_visitor =
31
31
fn ( & @ast:: expr e) visit_expr_pre,
32
32
fn ( & @ast:: expr e) visit_expr_post,
33
33
fn ( & @ast:: ty t) visit_ty_pre,
34
- fn ( & @ast:: ty t) visit_ty_post) ;
34
+ fn ( & @ast:: ty t) visit_ty_post,
35
+ fn ( & ast:: _fn f, & ast:: def_id d_id) visit_fn_pre,
36
+ fn ( & ast:: _fn f, & ast:: def_id d_id) visit_fn_post) ;
35
37
36
38
fn walk_crate ( & ast_visitor v, & ast:: crate c) {
37
39
if ( !v. keep_going ( ) ) { ret; }
@@ -91,8 +93,8 @@ fn walk_item(&ast_visitor v, @ast::item i) {
91
93
walk_ty ( v, t) ;
92
94
walk_expr ( v, e) ;
93
95
}
94
- case ( ast:: item_fn ( _, ?f, _, _ , _) ) {
95
- walk_fn ( v, f) ;
96
+ case ( ast:: item_fn ( _, ?f, _, ?d , _) ) {
97
+ walk_fn ( v, f, d ) ;
96
98
}
97
99
case ( ast:: item_mod ( _, ?m, _) ) {
98
100
walk_mod ( v, m) ;
@@ -116,13 +118,13 @@ fn walk_item(&ast_visitor v, @ast::item i) {
116
118
}
117
119
for ( @ast:: method m in ob. methods) {
118
120
v. visit_method_pre ( m) ;
119
- walk_fn ( v, m. node . meth ) ;
121
+ walk_fn ( v, m. node . meth , m . node . id ) ;
120
122
v. visit_method_post ( m) ;
121
123
}
122
124
alt ( ob. dtor ) {
123
125
case ( none[ @ast:: method] ) { }
124
126
case ( some[ @ast:: method] ( ?m) ) {
125
- walk_fn ( v, m. node . meth ) ;
127
+ walk_fn ( v, m. node . meth , m . node . id ) ;
126
128
}
127
129
}
128
130
}
@@ -227,10 +229,12 @@ fn walk_fn_decl(&ast_visitor v, &ast::fn_decl fd) {
227
229
walk_ty ( v, fd. output ) ;
228
230
}
229
231
230
- fn walk_fn ( & ast_visitor v, & ast:: _fn f) {
232
+ fn walk_fn ( & ast_visitor v, & ast:: _fn f, & ast :: def_id d ) {
231
233
if ( !v. keep_going ( ) ) { ret; }
234
+ v. visit_fn_pre ( f, d) ;
232
235
walk_fn_decl ( v, f. decl ) ;
233
236
walk_block ( v, f. body ) ;
237
+ v. visit_fn_post ( f, d) ;
234
238
}
235
239
236
240
fn walk_block ( & ast_visitor v, & ast:: block b) {
@@ -455,6 +459,7 @@ fn def_visit_arm(&ast::arm a) { }
455
459
fn def_visit_decl ( & @ast:: decl d) { }
456
460
fn def_visit_expr ( & @ast:: expr e) { }
457
461
fn def_visit_ty ( & @ast:: ty t) { }
462
+ fn def_visit_fn ( & ast:: _fn f, & ast:: def_id d) { }
458
463
459
464
fn default_visitor ( ) -> ast_visitor {
460
465
@@ -472,6 +477,7 @@ fn default_visitor() -> ast_visitor {
472
477
auto d_visit_decl = def_visit_decl;
473
478
auto d_visit_expr = def_visit_expr;
474
479
auto d_visit_ty = def_visit_ty;
480
+ auto d_visit_fn = def_visit_fn;
475
481
476
482
ret rec ( keep_going = d_keep_going,
477
483
want_crate_directives = d_want_crate_directives,
@@ -498,7 +504,9 @@ fn default_visitor() -> ast_visitor {
498
504
visit_expr_pre = d_visit_expr,
499
505
visit_expr_post = d_visit_expr,
500
506
visit_ty_pre = d_visit_ty,
501
- visit_ty_post = d_visit_ty) ;
507
+ visit_ty_post = d_visit_ty,
508
+ visit_fn_pre = d_visit_fn,
509
+ visit_fn_post = d_visit_fn) ;
502
510
}
503
511
504
512
//
0 commit comments