Ensure visit_ty is called on type parameters during walk
This commit is contained in:
parent
39a000714a
commit
7082bf4478
@ -170,13 +170,31 @@ fn walk_ty(&ast_visitor v, @ast::ty t) {
|
||||
walk_ty(v, m.output);
|
||||
}
|
||||
}
|
||||
case (ast::ty_path(_, _)) {}
|
||||
case (ast::ty_path(?p, _)) {
|
||||
for (@ast::ty tp in p.node.types) {
|
||||
walk_ty(v, tp);
|
||||
}
|
||||
}
|
||||
case (ast::ty_type) {}
|
||||
case (ast::ty_constr(?t, _)) { walk_ty(v, t); }
|
||||
}
|
||||
v.visit_ty_post(t);
|
||||
}
|
||||
|
||||
fn walk_pat(&ast_visitor v, &@ast::pat p) {
|
||||
alt (p.node) {
|
||||
case (ast::pat_tag(?path, ?children, _)) {
|
||||
for (@ast::ty tp in path.node.types) {
|
||||
walk_ty(v, tp);
|
||||
}
|
||||
for (@ast::pat child in children) {
|
||||
walk_pat(v, child);
|
||||
}
|
||||
}
|
||||
case (_) {}
|
||||
}
|
||||
}
|
||||
|
||||
fn walk_native_mod(&ast_visitor v, &ast::native_mod nm) {
|
||||
if (!v.keep_going()) { ret; }
|
||||
for (@ast::view_item vi in nm.view_items) {
|
||||
@ -349,6 +367,7 @@ fn walk_expr(&ast_visitor v, @ast::expr e) {
|
||||
case (ast::expr_alt(?x, ?arms, _)) {
|
||||
walk_expr(v, x);
|
||||
for (ast::arm a in arms) {
|
||||
walk_pat(v, a.pat);
|
||||
v.visit_arm_pre(a);
|
||||
walk_block(v, a.block);
|
||||
v.visit_arm_post(a);
|
||||
@ -380,7 +399,11 @@ fn walk_expr(&ast_visitor v, @ast::expr e) {
|
||||
walk_expr(v, a);
|
||||
walk_expr(v, b);
|
||||
}
|
||||
case (ast::expr_path(_, _)) { }
|
||||
case (ast::expr_path(?p, _)) {
|
||||
for (@ast::ty tp in p.node.types) {
|
||||
walk_ty(v, tp);
|
||||
}
|
||||
}
|
||||
case (ast::expr_ext(_, ?args, ?body, ?expansion, _)) {
|
||||
// Only walk expansion, not args/body.
|
||||
walk_expr(v, expansion);
|
||||
|
Loading…
x
Reference in New Issue
Block a user