summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2013-06-07 17:46:44 +1000
committerHuon Wilson <dbau.pp+github@gmail.com>2013-06-07 17:46:44 +1000
commit6d5beda6772230d8ec0e5e4b9e561100acf81a6f (patch)
tree385860306f6e7a3eea69bf7edbe3874ea418edee /src/libsyntax/ext
parent43e52e4bf144bbd2f366a4f32ac0128136273226 (diff)
downloadrust-6d5beda6772230d8ec0e5e4b9e561100acf81a6f.tar.gz
rust-6d5beda6772230d8ec0e5e4b9e561100acf81a6f.zip
syntax: move expand_generic_deriving to be a method on TraitDef
Diffstat (limited to 'src/libsyntax/ext')
-rw-r--r--src/libsyntax/ext/deriving/clone.rs8
-rw-r--r--src/libsyntax/ext/deriving/cmp/eq.rs4
-rw-r--r--src/libsyntax/ext/deriving/cmp/ord.rs4
-rw-r--r--src/libsyntax/ext/deriving/cmp/totaleq.rs4
-rw-r--r--src/libsyntax/ext/deriving/cmp/totalord.rs3
-rw-r--r--src/libsyntax/ext/deriving/decodable.rs3
-rw-r--r--src/libsyntax/ext/deriving/encodable.rs3
-rw-r--r--src/libsyntax/ext/deriving/generic.rs55
-rw-r--r--src/libsyntax/ext/deriving/iter_bytes.rs2
-rw-r--r--src/libsyntax/ext/deriving/rand.rs3
-rw-r--r--src/libsyntax/ext/deriving/to_str.rs3
11 files changed, 37 insertions, 55 deletions
diff --git a/src/libsyntax/ext/deriving/clone.rs b/src/libsyntax/ext/deriving/clone.rs
index 8d9abb186fd..4fc67f2f52e 100644
--- a/src/libsyntax/ext/deriving/clone.rs
+++ b/src/libsyntax/ext/deriving/clone.rs
@@ -38,9 +38,7 @@ pub fn expand_deriving_clone(cx: @ExtCtxt,
         ]
     };
 
-    expand_deriving_generic(cx, span,
-                            mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 pub fn expand_deriving_deep_clone(cx: @ExtCtxt,
@@ -67,9 +65,7 @@ pub fn expand_deriving_deep_clone(cx: @ExtCtxt,
         ]
     };
 
-    expand_deriving_generic(cx, span,
-                            mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 fn cs_clone(
diff --git a/src/libsyntax/ext/deriving/cmp/eq.rs b/src/libsyntax/ext/deriving/cmp/eq.rs
index 67107b4218a..5fc75511e57 100644
--- a/src/libsyntax/ext/deriving/cmp/eq.rs
+++ b/src/libsyntax/ext/deriving/cmp/eq.rs
@@ -54,7 +54,5 @@ pub fn expand_deriving_eq(cx: @ExtCtxt,
             md!("ne", cs_ne)
         ]
     };
-
-    expand_deriving_generic(cx, span, mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
diff --git a/src/libsyntax/ext/deriving/cmp/ord.rs b/src/libsyntax/ext/deriving/cmp/ord.rs
index 8b8ee37691c..e07215a905a 100644
--- a/src/libsyntax/ext/deriving/cmp/ord.rs
+++ b/src/libsyntax/ext/deriving/cmp/ord.rs
@@ -49,9 +49,7 @@ pub fn expand_deriving_ord(cx: @ExtCtxt,
             md!("ge", false, true)
         ]
     };
-
-    expand_deriving_generic(cx, span, mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 /// `less`: is this `lt` or `le`? `equal`: is this `le` or `ge`?
diff --git a/src/libsyntax/ext/deriving/cmp/totaleq.rs b/src/libsyntax/ext/deriving/cmp/totaleq.rs
index f07c8949438..acd2073b273 100644
--- a/src/libsyntax/ext/deriving/cmp/totaleq.rs
+++ b/src/libsyntax/ext/deriving/cmp/totaleq.rs
@@ -42,7 +42,5 @@ pub fn expand_deriving_totaleq(cx: @ExtCtxt,
             }
         ]
     };
-
-    expand_deriving_generic(cx, span, mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
diff --git a/src/libsyntax/ext/deriving/cmp/totalord.rs b/src/libsyntax/ext/deriving/cmp/totalord.rs
index 4c1c940927b..94407cd6e72 100644
--- a/src/libsyntax/ext/deriving/cmp/totalord.rs
+++ b/src/libsyntax/ext/deriving/cmp/totalord.rs
@@ -38,8 +38,7 @@ pub fn expand_deriving_totalord(cx: @ExtCtxt,
         ]
     };
 
-    expand_deriving_generic(cx, span, mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 
diff --git a/src/libsyntax/ext/deriving/decodable.rs b/src/libsyntax/ext/deriving/decodable.rs
index 1991b2456d9..2081f262825 100644
--- a/src/libsyntax/ext/deriving/decodable.rs
+++ b/src/libsyntax/ext/deriving/decodable.rs
@@ -49,8 +49,7 @@ pub fn expand_deriving_decodable(cx: @ExtCtxt,
         ]
     };
 
-    expand_deriving_generic(cx, span, mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 fn decodable_substructure(cx: @ExtCtxt, span: span,
diff --git a/src/libsyntax/ext/deriving/encodable.rs b/src/libsyntax/ext/deriving/encodable.rs
index b9c4bf7bf26..2d24de553d6 100644
--- a/src/libsyntax/ext/deriving/encodable.rs
+++ b/src/libsyntax/ext/deriving/encodable.rs
@@ -109,8 +109,7 @@ pub fn expand_deriving_encodable(cx: @ExtCtxt,
         ]
     };
 
-    expand_deriving_generic(cx, span, mitem, in_items,
-                            &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 fn encodable_substructure(cx: @ExtCtxt, span: span,
diff --git a/src/libsyntax/ext/deriving/generic.rs b/src/libsyntax/ext/deriving/generic.rs
index e386a2cfb53..52a2d9ff9de 100644
--- a/src/libsyntax/ext/deriving/generic.rs
+++ b/src/libsyntax/ext/deriving/generic.rs
@@ -178,35 +178,6 @@ use core::vec;
 pub use self::ty::*;
 mod ty;
 
-pub fn expand_deriving_generic(cx: @ExtCtxt,
-                               span: span,
-                               _mitem: @ast::meta_item,
-                               in_items: ~[@ast::item],
-                               trait_def: &TraitDef) -> ~[@ast::item] {
-    let mut result = ~[];
-    for in_items.each |item| {
-        result.push(*item);
-        match item.node {
-            ast::item_struct(struct_def, ref generics) => {
-                result.push(trait_def.expand_struct_def(cx,
-                                                        span,
-                                                        struct_def,
-                                                        item.ident,
-                                                        generics));
-            }
-            ast::item_enum(ref enum_definition, ref generics) => {
-                result.push(trait_def.expand_enum_def(cx,
-                                                      span,
-                                                      enum_definition,
-                                                      item.ident,
-                                                      generics));
-            }
-            _ => ()
-        }
-    }
-    result
-}
-
 pub struct TraitDef<'self> {
     /// Path of the trait, including any type parameters
     path: Path<'self>,
@@ -310,6 +281,32 @@ pub type EnumNonMatchFunc<'self> =
 
 
 impl<'self> TraitDef<'self> {
+    pub fn expand(&self, cx: @ExtCtxt,
+                  span: span,
+                  _mitem: @ast::meta_item,
+                  in_items: ~[@ast::item]) -> ~[@ast::item] {
+        let mut result = ~[];
+        for in_items.each |item| {
+            result.push(*item);
+            match item.node {
+                ast::item_struct(struct_def, ref generics) => {
+                    result.push(self.expand_struct_def(cx, span,
+                                                       struct_def,
+                                                       item.ident,
+                                                       generics));
+                }
+                ast::item_enum(ref enum_def, ref generics) => {
+                    result.push(self.expand_enum_def(cx, span,
+                                                     enum_def,
+                                                     item.ident,
+                                                     generics));
+                }
+                _ => ()
+            }
+        }
+        result
+    }
+
     /**
      *
      * Given that we are deriving a trait `Tr` for a type `T<'a, ...,
diff --git a/src/libsyntax/ext/deriving/iter_bytes.rs b/src/libsyntax/ext/deriving/iter_bytes.rs
index 10fb4b8ecd4..13f83b55a40 100644
--- a/src/libsyntax/ext/deriving/iter_bytes.rs
+++ b/src/libsyntax/ext/deriving/iter_bytes.rs
@@ -42,7 +42,7 @@ pub fn expand_deriving_iter_bytes(cx: @ExtCtxt,
         ]
     };
 
-    expand_deriving_generic(cx, span, mitem, in_items, &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 fn iter_bytes_substructure(cx: @ExtCtxt, span: span, substr: &Substructure) -> @expr {
diff --git a/src/libsyntax/ext/deriving/rand.rs b/src/libsyntax/ext/deriving/rand.rs
index 54d31de7c50..ab5ac6d7847 100644
--- a/src/libsyntax/ext/deriving/rand.rs
+++ b/src/libsyntax/ext/deriving/rand.rs
@@ -47,8 +47,7 @@ pub fn expand_deriving_rand(cx: @ExtCtxt,
             }
         ]
     };
-
-    expand_deriving_generic(cx, span, mitem, in_items, &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 fn rand_substructure(cx: @ExtCtxt, span: span, substr: &Substructure) -> @expr {
diff --git a/src/libsyntax/ext/deriving/to_str.rs b/src/libsyntax/ext/deriving/to_str.rs
index 52efabd4b9b..41be3a775c1 100644
--- a/src/libsyntax/ext/deriving/to_str.rs
+++ b/src/libsyntax/ext/deriving/to_str.rs
@@ -37,8 +37,7 @@ pub fn expand_deriving_to_str(cx: @ExtCtxt,
             }
         ]
     };
-
-    expand_deriving_generic(cx, span, mitem, in_items, &trait_def)
+    trait_def.expand(cx, span, mitem, in_items)
 }
 
 fn to_str_substructure(cx: @ExtCtxt, span: span, substr: &Substructure) -> @expr {