Skip to content

Commit acf233b

Browse files
committed
---
yaml --- r: 31713 b: refs/heads/dist-snap c: a3f9e18 h: refs/heads/master i: 31711: 9052fef v: v3
1 parent b9aedb5 commit acf233b

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
99
refs/heads/incoming: d9317a174e434d4c99fc1a37fd7dc0d2f5328d37
10-
refs/heads/dist-snap: deaef48675c34f3a63ded090058dfe6cbe60c3c6
10+
refs/heads/dist-snap: a3f9e18b7acb64d905db4c76e483f5b555cb9188
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/dist-snap/src/libsyntax/ast_util.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,10 @@ fn id_visitor(vfn: fn@(node_id)) -> visit::vt<()> {
565565
visit_trait_method: fn@(_ty_m: trait_method) {
566566
},
567567

568+
visit_struct_def: fn@(_sd: struct_def, _id: ident, _tps: ~[ty_param],
569+
_id: node_id) {
570+
},
571+
568572
visit_class_item: fn@(c: @class_member) {
569573
match c.node {
570574
instance_var(_, _, _, id,_) => vfn(id),

branches/dist-snap/src/libsyntax/visit.rs

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ type visitor<E> =
6161
visit_fn: fn@(fn_kind, fn_decl, blk, span, node_id, E, vt<E>),
6262
visit_ty_method: fn@(ty_method, E, vt<E>),
6363
visit_trait_method: fn@(trait_method, E, vt<E>),
64+
visit_struct_def: fn@(struct_def, ident, ~[ty_param], node_id, E,
65+
vt<E>),
6466
visit_class_item: fn@(@class_member, E, vt<E>)};
6567

6668
fn default_visitor<E>() -> visitor<E> {
@@ -81,6 +83,8 @@ fn default_visitor<E>() -> visitor<E> {
8183
visit_fn: |a,b,c,d,e,f,g|visit_fn::<E>(a, b, c, d, e, f, g),
8284
visit_ty_method: |a,b,c|visit_ty_method::<E>(a, b, c),
8385
visit_trait_method: |a,b,c|visit_trait_method::<E>(a, b, c),
86+
visit_struct_def:
87+
|a,b,c,d,e,f|visit_struct_def::<E>(a, b, c, d, e, f),
8488
visit_class_item: |a,b,c|visit_class_item::<E>(a, b, c)};
8589
}
8690

@@ -153,19 +157,8 @@ fn visit_item<E>(i: @item, e: E, v: vt<E>) {
153157
}
154158
}
155159
item_class(struct_def, tps) => {
156-
v.visit_ty_params(tps, e, v);
157-
for struct_def.members.each |m| {
158-
v.visit_class_item(m, e, v);
159-
}
160-
for struct_def.traits.each |p| { visit_path(p.path, e, v); }
161-
do option::iter(struct_def.ctor) |ctor| {
162-
visit_class_ctor_helper(ctor, i.ident, tps,
163-
ast_util::local_def(i.id), e, v);
164-
};
165-
do option::iter(struct_def.dtor) |dtor| {
166-
visit_class_dtor_helper(dtor, tps,
167-
ast_util::local_def(i.id), e, v)
168-
};
160+
v.visit_ty_params(tps, e, v);
161+
v.visit_struct_def(struct_def, i.ident, tps, i.id, e, v);
169162
}
170163
item_trait(tps, traits, methods) => {
171164
v.visit_ty_params(tps, e, v);
@@ -325,6 +318,20 @@ fn visit_trait_method<E>(m: trait_method, e: E, v: vt<E>) {
325318
}
326319
}
327320

321+
fn visit_struct_def<E>(sd: struct_def, nm: ast::ident, tps: ~[ty_param],
322+
id: node_id, e: E, v: vt<E>) {
323+
for sd.members.each |m| {
324+
v.visit_class_item(m, e, v);
325+
}
326+
for sd.traits.each |p| { visit_path(p.path, e, v); }
327+
do option::iter(sd.ctor) |ctor| {
328+
visit_class_ctor_helper(ctor, nm, tps, ast_util::local_def(id), e, v);
329+
};
330+
do option::iter(sd.dtor) |dtor| {
331+
visit_class_dtor_helper(dtor, tps, ast_util::local_def(id), e, v)
332+
};
333+
}
334+
328335
fn visit_block<E>(b: ast::blk, e: E, v: vt<E>) {
329336
for b.node.view_items.each |vi| { v.visit_view_item(vi, e, v); }
330337
for b.node.stmts.each |s| { v.visit_stmt(s, e, v); }
@@ -472,6 +479,7 @@ type simple_visitor =
472479
visit_fn: fn@(fn_kind, fn_decl, blk, span, node_id),
473480
visit_ty_method: fn@(ty_method),
474481
visit_trait_method: fn@(trait_method),
482+
visit_struct_def: fn@(struct_def, ident, ~[ty_param], node_id),
475483
visit_class_item: fn@(@class_member)};
476484

477485
fn simple_ignore_ty(_t: @ty) {}
@@ -495,6 +503,8 @@ fn default_simple_visitor() -> simple_visitor {
495503
_id: node_id) { },
496504
visit_ty_method: fn@(_m: ty_method) { },
497505
visit_trait_method: fn@(_m: trait_method) { },
506+
visit_struct_def: fn@(_sd: struct_def, _nm: ident,
507+
_tps: ~[ty_param], _id: node_id) { },
498508
visit_class_item: fn@(_c: @class_member) {}
499509
};
500510
}
@@ -562,6 +572,12 @@ fn mk_simple_visitor(v: simple_visitor) -> vt<()> {
562572
f(m);
563573
visit_trait_method(m, e, v);
564574
}
575+
fn v_struct_def(f: fn@(struct_def, ident, ~[ty_param], node_id),
576+
sd: struct_def, nm: ident, tps: ~[ty_param], id: node_id,
577+
&&e: (), v: vt<()>) {
578+
f(sd, nm, tps, id);
579+
visit_struct_def(sd, nm, tps, id, e, v);
580+
}
565581
fn v_ty_params(f: fn@(~[ty_param]),
566582
ps: ~[ty_param],
567583
&&e: (), v: vt<()>) {
@@ -609,6 +625,8 @@ fn mk_simple_visitor(v: simple_visitor) -> vt<()> {
609625
v_ty_method(v.visit_ty_method, a, b, c),
610626
visit_trait_method: |a,b,c|
611627
v_trait_method(v.visit_trait_method, a, b, c),
628+
visit_struct_def: |a,b,c,d,e,f|
629+
v_struct_def(v.visit_struct_def, a, b, c, d, e, f),
612630
visit_class_item: |a,b,c|
613631
v_class_item(v.visit_class_item, a, b, c)
614632
});

0 commit comments

Comments
 (0)