Skip to content

Commit e6d87a3

Browse files
committed
libsyntax: Implement deriving correctly for type-parameterized structs and enums. r=brson
1 parent 57588ed commit e6d87a3

File tree

3 files changed

+168
-61
lines changed

3 files changed

+168
-61
lines changed

src/libsyntax/ext/build.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ fn mk_raw_path(sp: span, idents: ~[ast::ident]) -> @ast::path {
3939
rp: None, types: ~[]};
4040
return p;
4141
}
42+
fn mk_raw_path_(sp: span,
43+
idents: ~[ast::ident],
44+
+types: ~[@ast::Ty])
45+
-> @ast::path {
46+
@{ span: sp, global: false, idents: idents, rp: None, types: move types }
47+
}
4248
fn mk_path(cx: ext_ctxt, sp: span, idents: ~[ast::ident]) ->
4349
@ast::expr {
4450
mk_expr(cx, sp, ast::expr_path(mk_raw_path(sp, idents)))
@@ -224,4 +230,10 @@ fn mk_arg(cx: ext_ctxt,
224230
fn mk_fn_decl(+inputs: ~[ast::arg], output: @ast::Ty) -> ast::fn_decl {
225231
{ inputs: move inputs, output: output, cf: ast::return_val }
226232
}
233+
fn mk_ty_param(cx: ext_ctxt,
234+
ident: ast::ident,
235+
bounds: @~[ast::ty_param_bound])
236+
-> ast::ty_param {
237+
{ ident: ident, id: cx.next_id(), bounds: bounds }
238+
}
227239

0 commit comments

Comments
 (0)