about summary refs log tree commit diff
path: root/src/comp/syntax
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-03-01 10:36:22 -0800
committerNiko Matsakis <niko@alum.mit.edu>2012-03-02 06:47:25 -0800
commitdef72bda47977b3bc36143eba9692bff12a8303c (patch)
tree20dc1277106ddb56ded43fec53318b17c51baee1 /src/comp/syntax
parent12c68bcd6df325cc369adce018c07dfe3e2b767a (diff)
retool inline encoding to handle methods, fix tests
Diffstat (limited to 'src/comp/syntax')
-rw-r--r--src/comp/syntax/visit.rs12
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);