about summary refs log tree commit diff
path: root/src/rustc/syntax/ast_util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/rustc/syntax/ast_util.rs')
-rw-r--r--src/rustc/syntax/ast_util.rs37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/rustc/syntax/ast_util.rs b/src/rustc/syntax/ast_util.rs
index 4ab7c325a69..bf32bb0ebf3 100644
--- a/src/rustc/syntax/ast_util.rs
+++ b/src/rustc/syntax/ast_util.rs
@@ -262,9 +262,9 @@ pure fn unguarded_pat(a: arm) -> option<[@pat]> {
 // for reserving this id.
 fn op_expr_callee_id(e: @expr) -> node_id { e.id - 1 }
 
-pure fn class_item_ident(ci: @class_item) -> ident {
-    alt ci.node.decl {
-      instance_var(i,_,_,_) { i }
+pure fn class_item_ident(ci: @class_member) -> ident {
+    alt ci.node {
+      instance_var(i,_,_,_,_) { i }
       class_method(it) { it.ident }
     }
 }
@@ -272,31 +272,32 @@ pure fn class_item_ident(ci: @class_item) -> ident {
 type ivar = {ident: ident, ty: @ty, cm: class_mutability,
              id: node_id, privacy: privacy};
 
-type cmethod = {privacy: privacy, meth: @method};
-
-fn public_methods(cms: [cmethod]) -> [@method] {
-    vec::filter_map(cms, {|cm| alt cm.privacy {
-                    pub { some(cm.meth) }
-                    _   { none }}})
-}
-
-fn ignore_privacy(cms: [cmethod]) -> [@method] {
-    vec::map(cms, {|cm| cm.meth})
+fn public_methods(ms: [@method]) -> [@method] {
+    vec::filter(ms, {|m| alt m.privacy {
+                    pub { true }
+                    _   { false }}})
 }
 
-fn split_class_items(cs: [@class_item]) -> ([ivar], [cmethod]) {
+fn split_class_items(cs: [@class_member]) -> ([ivar], [@method]) {
     let mut vs = [], ms = [];
     for c in cs {
-      alt c.node.decl {
-        instance_var(i, t, cm, id) {
-          vs += [{ident: i, ty: t, cm: cm, id: id, privacy: c.node.privacy}];
+      alt c.node {
+        instance_var(i, t, cm, id, privacy) {
+          vs += [{ident: i, ty: t, cm: cm, id: id, privacy: privacy}];
         }
-        class_method(m) { ms += [{privacy: c.node.privacy, meth: m}]; }
+        class_method(m) { ms += [m]; }
       }
     }
     (vs, ms)
 }
 
+pure fn class_member_privacy(ci: @class_member) -> privacy {
+  alt ci.node {
+     instance_var(_, _, _, _, p) { p }
+     class_method(m) { m.privacy }
+  }
+}
+
 impl inlined_item_methods for inlined_item {
     fn ident() -> ident {
         alt self {