Skip to content

Commit 6d5beda

Browse files
committed
syntax: move expand_generic_deriving to be a method on TraitDef
1 parent 43e52e4 commit 6d5beda

File tree

11 files changed

+37
-55
lines changed

11 files changed

+37
-55
lines changed

src/libsyntax/ext/deriving/clone.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ pub fn expand_deriving_clone(cx: @ExtCtxt,
3838
]
3939
};
4040

41-
expand_deriving_generic(cx, span,
42-
mitem, in_items,
43-
&trait_def)
41+
trait_def.expand(cx, span, mitem, in_items)
4442
}
4543

4644
pub fn expand_deriving_deep_clone(cx: @ExtCtxt,
@@ -67,9 +65,7 @@ pub fn expand_deriving_deep_clone(cx: @ExtCtxt,
6765
]
6866
};
6967

70-
expand_deriving_generic(cx, span,
71-
mitem, in_items,
72-
&trait_def)
68+
trait_def.expand(cx, span, mitem, in_items)
7369
}
7470

7571
fn cs_clone(

src/libsyntax/ext/deriving/cmp/eq.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,5 @@ pub fn expand_deriving_eq(cx: @ExtCtxt,
5454
md!("ne", cs_ne)
5555
]
5656
};
57-
58-
expand_deriving_generic(cx, span, mitem, in_items,
59-
&trait_def)
57+
trait_def.expand(cx, span, mitem, in_items)
6058
}

src/libsyntax/ext/deriving/cmp/ord.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ pub fn expand_deriving_ord(cx: @ExtCtxt,
4949
md!("ge", false, true)
5050
]
5151
};
52-
53-
expand_deriving_generic(cx, span, mitem, in_items,
54-
&trait_def)
52+
trait_def.expand(cx, span, mitem, in_items)
5553
}
5654

5755
/// `less`: is this `lt` or `le`? `equal`: is this `le` or `ge`?

src/libsyntax/ext/deriving/cmp/totaleq.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,5 @@ pub fn expand_deriving_totaleq(cx: @ExtCtxt,
4242
}
4343
]
4444
};
45-
46-
expand_deriving_generic(cx, span, mitem, in_items,
47-
&trait_def)
45+
trait_def.expand(cx, span, mitem, in_items)
4846
}

src/libsyntax/ext/deriving/cmp/totalord.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ pub fn expand_deriving_totalord(cx: @ExtCtxt,
3838
]
3939
};
4040

41-
expand_deriving_generic(cx, span, mitem, in_items,
42-
&trait_def)
41+
trait_def.expand(cx, span, mitem, in_items)
4342
}
4443

4544

src/libsyntax/ext/deriving/decodable.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ pub fn expand_deriving_decodable(cx: @ExtCtxt,
4949
]
5050
};
5151

52-
expand_deriving_generic(cx, span, mitem, in_items,
53-
&trait_def)
52+
trait_def.expand(cx, span, mitem, in_items)
5453
}
5554

5655
fn decodable_substructure(cx: @ExtCtxt, span: span,

src/libsyntax/ext/deriving/encodable.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,7 @@ pub fn expand_deriving_encodable(cx: @ExtCtxt,
109109
]
110110
};
111111

112-
expand_deriving_generic(cx, span, mitem, in_items,
113-
&trait_def)
112+
trait_def.expand(cx, span, mitem, in_items)
114113
}
115114

116115
fn encodable_substructure(cx: @ExtCtxt, span: span,

src/libsyntax/ext/deriving/generic.rs

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -178,35 +178,6 @@ use core::vec;
178178
pub use self::ty::*;
179179
mod ty;
180180

181-
pub fn expand_deriving_generic(cx: @ExtCtxt,
182-
span: span,
183-
_mitem: @ast::meta_item,
184-
in_items: ~[@ast::item],
185-
trait_def: &TraitDef) -> ~[@ast::item] {
186-
let mut result = ~[];
187-
for in_items.each |item| {
188-
result.push(*item);
189-
match item.node {
190-
ast::item_struct(struct_def, ref generics) => {
191-
result.push(trait_def.expand_struct_def(cx,
192-
span,
193-
struct_def,
194-
item.ident,
195-
generics));
196-
}
197-
ast::item_enum(ref enum_definition, ref generics) => {
198-
result.push(trait_def.expand_enum_def(cx,
199-
span,
200-
enum_definition,
201-
item.ident,
202-
generics));
203-
}
204-
_ => ()
205-
}
206-
}
207-
result
208-
}
209-
210181
pub struct TraitDef<'self> {
211182
/// Path of the trait, including any type parameters
212183
path: Path<'self>,
@@ -310,6 +281,32 @@ pub type EnumNonMatchFunc<'self> =
310281

311282

312283
impl<'self> TraitDef<'self> {
284+
pub fn expand(&self, cx: @ExtCtxt,
285+
span: span,
286+
_mitem: @ast::meta_item,
287+
in_items: ~[@ast::item]) -> ~[@ast::item] {
288+
let mut result = ~[];
289+
for in_items.each |item| {
290+
result.push(*item);
291+
match item.node {
292+
ast::item_struct(struct_def, ref generics) => {
293+
result.push(self.expand_struct_def(cx, span,
294+
struct_def,
295+
item.ident,
296+
generics));
297+
}
298+
ast::item_enum(ref enum_def, ref generics) => {
299+
result.push(self.expand_enum_def(cx, span,
300+
enum_def,
301+
item.ident,
302+
generics));
303+
}
304+
_ => ()
305+
}
306+
}
307+
result
308+
}
309+
313310
/**
314311
*
315312
* Given that we are deriving a trait `Tr` for a type `T<'a, ...,

src/libsyntax/ext/deriving/iter_bytes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pub fn expand_deriving_iter_bytes(cx: @ExtCtxt,
4242
]
4343
};
4444

45-
expand_deriving_generic(cx, span, mitem, in_items, &trait_def)
45+
trait_def.expand(cx, span, mitem, in_items)
4646
}
4747

4848
fn iter_bytes_substructure(cx: @ExtCtxt, span: span, substr: &Substructure) -> @expr {

src/libsyntax/ext/deriving/rand.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ pub fn expand_deriving_rand(cx: @ExtCtxt,
4747
}
4848
]
4949
};
50-
51-
expand_deriving_generic(cx, span, mitem, in_items, &trait_def)
50+
trait_def.expand(cx, span, mitem, in_items)
5251
}
5352

5453
fn rand_substructure(cx: @ExtCtxt, span: span, substr: &Substructure) -> @expr {

src/libsyntax/ext/deriving/to_str.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ pub fn expand_deriving_to_str(cx: @ExtCtxt,
3737
}
3838
]
3939
};
40-
41-
expand_deriving_generic(cx, span, mitem, in_items, &trait_def)
40+
trait_def.expand(cx, span, mitem, in_items)
4241
}
4342

4443
fn to_str_substructure(cx: @ExtCtxt, span: span, substr: &Substructure) -> @expr {

0 commit comments

Comments
 (0)