diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2013-06-07 17:46:44 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2013-06-07 17:46:44 +1000 |
| commit | 6d5beda6772230d8ec0e5e4b9e561100acf81a6f (patch) | |
| tree | 385860306f6e7a3eea69bf7edbe3874ea418edee /src/libsyntax/ext | |
| parent | 43e52e4bf144bbd2f366a4f32ac0128136273226 (diff) | |
| download | rust-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.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/eq.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/ord.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/totaleq.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/cmp/totalord.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/decodable.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/encodable.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/generic.rs | 55 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/iter_bytes.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/rand.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/to_str.rs | 3 |
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 { |
