@@ -14,6 +14,7 @@ fn vt[E](&vt[E] x) -> visitor[E] {
14
14
15
15
type visitor[ E ] =
16
16
@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,
17
18
fn ( & @native_item i, & E e, & vt[ E ] v) visit_native_item,
18
19
fn ( & @item i, & E e, & vt[ E ] v) visit_item,
19
20
fn ( & block b, & E e, & vt[ E ] v) visit_block,
@@ -23,12 +24,12 @@ type visitor[E] =
23
24
fn ( & @decl d, & E e, & vt[ E ] v) visit_decl,
24
25
fn ( & @expr ex, & E e, & vt[ E ] v) visit_expr,
25
26
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) ;
29
29
30
30
fn default_visitor[ E ] ( ) -> visitor[ E ] {
31
31
ret @rec( visit_mod = bind visit_mod[ E ] ( _, _, _, _) ,
32
+ visit_view_item = bind visit_view_item[ E ] ( _, _, _) ,
32
33
visit_native_item = bind visit_native_item[ E ] ( _, _, _) ,
33
34
visit_item = bind visit_item[ E ] ( _, _, _) ,
34
35
visit_block = bind visit_block[ E ] ( _, _, _) ,
@@ -38,32 +39,63 @@ fn default_visitor[E]() -> visitor[E] {
38
39
visit_decl = bind visit_decl[ E ] ( _, _, _) ,
39
40
visit_expr = bind visit_expr[ E ] ( _, _, _) ,
40
41
visit_ty = bind visit_ty[ E ] ( _, _, _) ,
41
- visit_fn = bind visit_fn[ E ] ( _, _, _, _, _, _, _) ) ;
42
+ visit_fn = bind visit_fn[ E ] ( _, _, _, _, _, _, _, _ ) ) ;
42
43
}
43
44
44
45
fn visit_crate[ E ] ( & crate c, & E e, & vt[ E ] v) {
45
46
vt ( v) . visit_mod ( c. node . module , c. span , e, v) ;
46
47
}
47
48
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
+
48
72
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
+ }
49
76
for ( @item i in m. items ) {
50
77
vt ( v) . visit_item ( i, e, v) ;
51
78
}
52
79
}
53
80
81
+ fn visit_view_item[ E ] ( & @view_item vi, & E e, & vt[ E ] v) { }
82
+
54
83
fn visit_item[ E ] ( & @item i, & E e, & vt[ E ] v) {
55
84
alt ( i. node ) {
56
85
case ( item_const ( _, ?t, ?ex, _, _) ) {
57
86
vt ( v) . visit_ty ( t, e, v) ;
58
87
vt ( v) . visit_expr ( ex, e, v) ;
59
88
}
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) ;
62
91
}
63
92
case ( item_mod ( _, ?m, _) ) {
64
93
vt ( v) . visit_mod ( m, i. span , e, v) ;
65
94
}
66
95
case ( item_native_mod ( _, ?nm, _) ) {
96
+ for ( @view_item vi in nm. view_items) {
97
+ vt ( v) . visit_view_item ( vi, e, v) ;
98
+ }
67
99
for ( @native_item ni in nm. items) {
68
100
vt ( v) . visit_native_item ( ni, e, v) ;
69
101
}
@@ -83,13 +115,13 @@ fn visit_item[E](&@item i, &E e, &vt[E] v) {
83
115
vt ( v) . visit_ty ( f. ty , e, v) ;
84
116
}
85
117
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) ;
88
120
}
89
121
alt ( ob. dtor ) {
90
122
case ( none) { }
91
123
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 ,
93
125
m. node . id , m. node . ann , e, v) ;
94
126
}
95
127
}
@@ -142,9 +174,8 @@ fn visit_ty[E](&@ty t, &E e, &vt[E] v) {
142
174
fn visit_pat[ E ] ( & @pat p, & E e, & vt[ E ] v) {
143
175
alt ( p. node ) {
144
176
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) ; }
148
179
}
149
180
case ( _) { }
150
181
}
@@ -166,8 +197,8 @@ fn visit_fn_decl[E](&fn_decl fd, &E e, &vt[E] v) {
166
197
vt ( v) . visit_ty ( fd. output , e, v) ;
167
198
}
168
199
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) {
171
202
visit_fn_decl ( f. decl , e, v) ;
172
203
vt ( v) . visit_block ( f. body , e, v) ;
173
204
}
@@ -181,7 +212,7 @@ fn visit_stmt[E](&@stmt s, &E e, &vt[E] v) {
181
212
alt ( s. node ) {
182
213
case ( stmt_decl ( ?d, _) ) { vt ( v) . visit_decl ( d, e, v) ; }
183
214
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 ) ; }
185
216
}
186
217
}
187
218
@@ -359,8 +390,8 @@ fn visit_expr[E](&@expr ex, &E e, &vt[E] v) {
359
390
}
360
391
}
361
392
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) ;
364
395
}
365
396
}
366
397
}
0 commit comments