diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-03-01 10:36:22 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-03-02 06:47:25 -0800 |
| commit | def72bda47977b3bc36143eba9692bff12a8303c (patch) | |
| tree | 20dc1277106ddb56ded43fec53318b17c51baee1 /src/comp/syntax | |
| parent | 12c68bcd6df325cc369adce018c07dfe3e2b767a (diff) | |
retool inline encoding to handle methods, fix tests
Diffstat (limited to 'src/comp/syntax')
| -rw-r--r-- | src/comp/syntax/visit.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/comp/syntax/visit.rs b/src/comp/syntax/visit.rs index 5cf4773101e..55958abd7af 100644 --- a/src/comp/syntax/visit.rs +++ b/src/comp/syntax/visit.rs @@ -130,8 +130,7 @@ fn visit_item<E>(i: @item, e: E, v: vt<E>) { alt ifce { some(ty) { v.visit_ty(ty, e, v); } _ {} } v.visit_ty(ty, e, v); for m in methods { - v.visit_fn(fk_method(m.ident, m.tps), m.decl, m.body, m.span, - m.id, e, v); + visit_method_helper(m, e, v) } } item_class(tps, members, _, ctor_decl, ctor_blk) { @@ -252,6 +251,15 @@ fn visit_fn_decl<E>(fd: fn_decl, e: E, v: vt<E>) { v.visit_ty(fd.output, e, v); } +// Note: there is no visit_method() method in the visitor, instead override +// visit_fn() and check for fk_method(). I named this visit_method_helper() +// because it is not a default impl of any method, though I doubt that really +// clarifies anything. - Niko +fn visit_method_helper<E>(m: @method, e: E, v: vt<E>) { + v.visit_fn(fk_method(m.ident, m.tps), m.decl, m.body, m.span, + m.id, e, v); +} + fn visit_fn<E>(fk: fn_kind, decl: fn_decl, body: blk, _sp: span, _id: node_id, e: E, v: vt<E>) { visit_fn_decl(decl, e, v); |
