Skip to content

Commit 23786a7

Browse files
committed
---
yaml --- r: 2994 b: refs/heads/master c: d851617 h: refs/heads/master v: v3
1 parent c2c3e90 commit 23786a7

File tree

3 files changed

+51
-20
lines changed

3 files changed

+51
-20
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: d1819fb74714df5b72720367ecb90590ed3ac226
2+
refs/heads/master: d8516178e51e495579b32bfdf6630079a4ffdf42

trunk/src/comp/middle/alias.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ fn check_crate(@ty::ctxt tcx, resolve::def_map dm, &@ast::crate crate) {
3535
visit::visit_crate(*crate, [], visit::vtor(v));
3636
}
3737

38-
fn visit_fn(&ast::_fn f, &span sp, &ident name, &ast::def_id d_id,
39-
&ast::ann a, &scope sc, &vt[scope] v) {
38+
fn visit_fn(&ast::_fn f, &vec[ast::ty_param] tp, &span sp, &ident name,
39+
&ast::def_id d_id, &ast::ann a, &scope sc, &vt[scope] v) {
4040
visit::visit_fn_decl(f.decl, sc, v);
4141
vt(v).visit_block(f.body, [], v);
4242
}

trunk/src/comp/middle/visit.rs

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ fn vt[E](&vt[E] x) -> visitor[E] {
1414

1515
type visitor[E] =
1616
@rec(fn(&_mod m, &span sp, &E e, &vt[E] v) visit_mod,
17+
fn(&@view_item v, &E e, &vt[E] v) visit_view_item,
1718
fn(&@native_item i, &E e, &vt[E] v) visit_native_item,
1819
fn(&@item i, &E e, &vt[E] v) visit_item,
1920
fn(&block b, &E e, &vt[E] v) visit_block,
@@ -23,12 +24,12 @@ type visitor[E] =
2324
fn(&@decl d, &E e, &vt[E] v) visit_decl,
2425
fn(&@expr ex, &E e, &vt[E] v) visit_expr,
2526
fn(&@ty t, &E e, &vt[E] v) visit_ty,
26-
fn(&_fn f, &span sp, &ident name,
27-
&def_id d_id, &ann a,
28-
&E e, &vt[E] v) visit_fn);
27+
fn(&_fn f, &vec[ty_param] tp, &span sp, &ident name, &def_id d_id,
28+
&ann a, &E e, &vt[E] v) visit_fn);
2929

3030
fn default_visitor[E]() -> visitor[E] {
3131
ret @rec(visit_mod = bind visit_mod[E](_, _, _, _),
32+
visit_view_item = bind visit_view_item[E](_, _, _),
3233
visit_native_item = bind visit_native_item[E](_, _, _),
3334
visit_item = bind visit_item[E](_, _, _),
3435
visit_block = bind visit_block[E](_, _, _),
@@ -38,32 +39,63 @@ fn default_visitor[E]() -> visitor[E] {
3839
visit_decl = bind visit_decl[E](_, _, _),
3940
visit_expr = bind visit_expr[E](_, _, _),
4041
visit_ty = bind visit_ty[E](_, _, _),
41-
visit_fn = bind visit_fn[E](_, _, _, _, _, _, _));
42+
visit_fn = bind visit_fn[E](_, _, _, _, _, _, _, _));
4243
}
4344

4445
fn visit_crate[E](&crate c, &E e, &vt[E] v) {
4546
vt(v).visit_mod(c.node.module, c.span, e, v);
4647
}
4748

49+
fn visit_crate_directive[E](&@crate_directive cd, &E e, &vt[E] v) {
50+
alt (cd.node) {
51+
case (cdir_let(_, ?ex, ?cdirs)) {
52+
vt(v).visit_expr(ex, e, v);
53+
for (@crate_directive cdir in cdirs) {
54+
visit_crate_directive(cdir, e, v);
55+
}
56+
}
57+
case (cdir_src_mod(_, _)) {}
58+
case (cdir_dir_mod(_, _, ?cdirs)) {
59+
for (@crate_directive cdir in cdirs) {
60+
visit_crate_directive(cdir, e, v);
61+
}
62+
}
63+
case (cdir_view_item(?vi)) {
64+
vt(v).visit_view_item(vi, e, v);
65+
}
66+
case (cdir_meta(_,_)) {}
67+
case (cdir_syntax(_)) {}
68+
case (cdir_auth(_, _)) {}
69+
}
70+
}
71+
4872
fn visit_mod[E](&_mod m, &span sp, &E e, &vt[E] v) {
73+
for (@view_item vi in m.view_items) {
74+
vt(v).visit_view_item(vi, e, v);
75+
}
4976
for (@item i in m.items) {
5077
vt(v).visit_item(i, e, v);
5178
}
5279
}
5380

81+
fn visit_view_item[E](&@view_item vi, &E e, &vt[E] v) {}
82+
5483
fn visit_item[E](&@item i, &E e, &vt[E] v) {
5584
alt (i.node) {
5685
case (item_const(_, ?t, ?ex, _, _)) {
5786
vt(v).visit_ty(t, e, v);
5887
vt(v).visit_expr(ex, e, v);
5988
}
60-
case (item_fn(?nm, ?f, _, ?d, ?a)) {
61-
vt(v).visit_fn(f, i.span, nm, d, a, e, v);
89+
case (item_fn(?nm, ?f, ?tp, ?d, ?a)) {
90+
vt(v).visit_fn(f, tp, i.span, nm, d, a, e, v);
6291
}
6392
case (item_mod(_, ?m, _)) {
6493
vt(v).visit_mod(m, i.span, e, v);
6594
}
6695
case (item_native_mod(_, ?nm, _)) {
96+
for (@view_item vi in nm.view_items) {
97+
vt(v).visit_view_item(vi, e, v);
98+
}
6799
for (@native_item ni in nm.items) {
68100
vt(v).visit_native_item(ni, e, v);
69101
}
@@ -83,13 +115,13 @@ fn visit_item[E](&@item i, &E e, &vt[E] v) {
83115
vt(v).visit_ty(f.ty, e, v);
84116
}
85117
for (@method m in ob.methods) {
86-
vt(v).visit_fn(m.node.meth, m.span, m.node.ident, m.node.id,
87-
m.node.ann, e, v);
118+
vt(v).visit_fn(m.node.meth, [], m.span, m.node.ident,
119+
m.node.id, m.node.ann, e, v);
88120
}
89121
alt (ob.dtor) {
90122
case (none) {}
91123
case (some(?m)) {
92-
vt(v).visit_fn(m.node.meth, m.span, m.node.ident,
124+
vt(v).visit_fn(m.node.meth, [], m.span, m.node.ident,
93125
m.node.id, m.node.ann, e, v);
94126
}
95127
}
@@ -142,9 +174,8 @@ fn visit_ty[E](&@ty t, &E e, &vt[E] v) {
142174
fn visit_pat[E](&@pat p, &E e, &vt[E] v) {
143175
alt (p.node) {
144176
case (pat_tag(?path, ?children, _)) {
145-
for (@pat child in children) {
146-
vt(v).visit_pat(child, e, v);
147-
}
177+
for (@ty tp in path.node.types) { vt(v).visit_ty(tp, e, v); }
178+
for (@pat child in children) { vt(v).visit_pat(child, e, v); }
148179
}
149180
case (_) {}
150181
}
@@ -166,8 +197,8 @@ fn visit_fn_decl[E](&fn_decl fd, &E e, &vt[E] v) {
166197
vt(v).visit_ty(fd.output, e, v);
167198
}
168199

169-
fn visit_fn[E](&_fn f, &span sp, &ident i, &def_id d, &ann a,
170-
&E e, &vt[E] v) {
200+
fn visit_fn[E](&_fn f, &vec[ty_param] tp, &span sp, &ident i, &def_id d,
201+
&ann a, &E e, &vt[E] v) {
171202
visit_fn_decl(f.decl, e, v);
172203
vt(v).visit_block(f.body, e, v);
173204
}
@@ -181,7 +212,7 @@ fn visit_stmt[E](&@stmt s, &E e, &vt[E] v) {
181212
alt (s.node) {
182213
case (stmt_decl(?d, _)) { vt(v).visit_decl(d, e, v); }
183214
case (stmt_expr(?ex, _)) { vt(v).visit_expr(ex, e, v); }
184-
case (stmt_crate_directive(?cdir)) {}
215+
case (stmt_crate_directive(?cd)) { visit_crate_directive(cd, e, v); }
185216
}
186217
}
187218

@@ -359,8 +390,8 @@ fn visit_expr[E](&@expr ex, &E e, &vt[E] v) {
359390
}
360391
}
361392
for (@method m in anon_obj.methods) {
362-
vt(v).visit_fn(m.node.meth, m.span, m.node.ident,
363-
m.node.id, m.node.ann, e, v);
393+
vt(v).visit_fn(m.node.meth, [], m.span, m.node.ident,
394+
m.node.id, m.node.ann, e, v);
364395
}
365396
}
366397
}

0 commit comments

Comments
 (0)