Skip to content

Commit cdfddaa

Browse files
catamorphismgraydon
authored andcommitted
---
yaml --- r: 2637 b: refs/heads/master c: dc83c84 h: refs/heads/master i: 2635: a9fe725 v: v3
1 parent 535ae29 commit cdfddaa

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: ea1701de8c9ff1b2e5a92c07daa07d9d444d6c51
2+
refs/heads/master: dc83c846623c2d9c0ad31ebe769def34d8f1579f

trunk/src/comp/middle/walk.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ type ast_visitor =
3131
fn (&@ast::expr e) visit_expr_pre,
3232
fn (&@ast::expr e) visit_expr_post,
3333
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);
3537

3638
fn walk_crate(&ast_visitor v, &ast::crate c) {
3739
if (!v.keep_going()) { ret; }
@@ -91,8 +93,8 @@ fn walk_item(&ast_visitor v, @ast::item i) {
9193
walk_ty(v, t);
9294
walk_expr(v, e);
9395
}
94-
case (ast::item_fn(_, ?f, _, _, _)) {
95-
walk_fn(v, f);
96+
case (ast::item_fn(_, ?f, _, ?d, _)) {
97+
walk_fn(v, f, d);
9698
}
9799
case (ast::item_mod(_, ?m, _)) {
98100
walk_mod(v, m);
@@ -116,13 +118,13 @@ fn walk_item(&ast_visitor v, @ast::item i) {
116118
}
117119
for (@ast::method m in ob.methods) {
118120
v.visit_method_pre(m);
119-
walk_fn(v, m.node.meth);
121+
walk_fn(v, m.node.meth, m.node.id);
120122
v.visit_method_post(m);
121123
}
122124
alt (ob.dtor) {
123125
case (none[@ast::method]) {}
124126
case (some[@ast::method](?m)) {
125-
walk_fn(v, m.node.meth);
127+
walk_fn(v, m.node.meth, m.node.id);
126128
}
127129
}
128130
}
@@ -227,10 +229,12 @@ fn walk_fn_decl(&ast_visitor v, &ast::fn_decl fd) {
227229
walk_ty(v, fd.output);
228230
}
229231

230-
fn walk_fn(&ast_visitor v, &ast::_fn f) {
232+
fn walk_fn(&ast_visitor v, &ast::_fn f, &ast::def_id d) {
231233
if (!v.keep_going()) { ret; }
234+
v.visit_fn_pre(f, d);
232235
walk_fn_decl(v, f.decl);
233236
walk_block(v, f.body);
237+
v.visit_fn_post(f, d);
234238
}
235239

236240
fn walk_block(&ast_visitor v, &ast::block b) {
@@ -455,6 +459,7 @@ fn def_visit_arm(&ast::arm a) { }
455459
fn def_visit_decl(&@ast::decl d) { }
456460
fn def_visit_expr(&@ast::expr e) { }
457461
fn def_visit_ty(&@ast::ty t) { }
462+
fn def_visit_fn(&ast::_fn f, &ast::def_id d) { }
458463

459464
fn default_visitor() -> ast_visitor {
460465

@@ -472,6 +477,7 @@ fn default_visitor() -> ast_visitor {
472477
auto d_visit_decl = def_visit_decl;
473478
auto d_visit_expr = def_visit_expr;
474479
auto d_visit_ty = def_visit_ty;
480+
auto d_visit_fn = def_visit_fn;
475481

476482
ret rec(keep_going = d_keep_going,
477483
want_crate_directives = d_want_crate_directives,
@@ -498,7 +504,9 @@ fn default_visitor() -> ast_visitor {
498504
visit_expr_pre = d_visit_expr,
499505
visit_expr_post = d_visit_expr,
500506
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);
502510
}
503511

504512
//

0 commit comments

Comments
 (0)