diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-01-24 10:33:20 -0800 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-01-24 16:24:31 -0800 |
| commit | 90734a0d3378b26f7800fc0ffdaa3a6897839514 (patch) | |
| tree | c2d7f19686e25503cccae8438b1f70b0be2c972f /src/libsyntax/ext | |
| parent | 79a9b23f4a6397398c915e092d70989041dfef28 (diff) | |
| download | rust-90734a0d3378b26f7800fc0ffdaa3a6897839514.tar.gz rust-90734a0d3378b26f7800fc0ffdaa3a6897839514.zip | |
Convert extfmt::rt::Conv into a struct
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/build.rs | 9 | ||||
| -rw-r--r-- | src/libsyntax/ext/fmt.rs | 27 |
2 files changed, 25 insertions, 11 deletions
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index 5e3d88b8b7f..5a8a1d8753d 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -172,6 +172,15 @@ fn mk_struct_e(cx: ext_ctxt, sp: span, mk_fields(sp, fields), option::None::<@ast::expr>)) } +fn mk_global_struct_e(cx: ext_ctxt, sp: span, + ctor_path: ~[ast::ident], + fields: ~[{ident: ast::ident, ex: @ast::expr}]) -> + @ast::expr { + mk_expr(cx, sp, + ast::expr_struct(mk_raw_path_global(sp, ctor_path), + mk_fields(sp, fields), + option::None::<@ast::expr>)) +} fn mk_glob_use(cx: ext_ctxt, sp: span, path: ~[ast::ident]) -> @ast::view_item { let glob = @ast::spanned { diff --git a/src/libsyntax/ext/fmt.rs b/src/libsyntax/ext/fmt.rs index 2b7bd9ddf32..65890351e39 100644 --- a/src/libsyntax/ext/fmt.rs +++ b/src/libsyntax/ext/fmt.rs @@ -56,8 +56,8 @@ fn expand_syntax_ext(cx: ext_ctxt, sp: span, tts: ~[ast::token_tree]) fn pieces_to_expr(cx: ext_ctxt, sp: span, pieces: ~[Piece], args: ~[@ast::expr]) -> @ast::expr { - fn make_path_vec(_cx: ext_ctxt, ident: @~str) -> ~[ast::ident] { - let intr = _cx.parse_sess().interner; + fn make_path_vec(cx: ext_ctxt, ident: @~str) -> ~[ast::ident] { + let intr = cx.parse_sess().interner; return ~[intr.intern(@~"extfmt"), intr.intern(@~"rt"), intr.intern(ident)]; } @@ -111,23 +111,28 @@ fn pieces_to_expr(cx: ext_ctxt, sp: span, } return make_rt_path_expr(cx, sp, @rt_type); } - fn make_conv_rec(cx: ext_ctxt, sp: span, flags_expr: @ast::expr, + fn make_conv_struct(cx: ext_ctxt, sp: span, flags_expr: @ast::expr, width_expr: @ast::expr, precision_expr: @ast::expr, ty_expr: @ast::expr) -> @ast::expr { let intr = cx.parse_sess().interner; - return mk_rec_e(cx, sp, - ~[{ident: intr.intern(@~"flags"), ex: flags_expr}, - {ident: intr.intern(@~"width"), ex: width_expr}, - {ident: intr.intern(@~"precision"), - ex: precision_expr}, - {ident: intr.intern(@~"ty"), ex: ty_expr}]); + mk_global_struct_e( + cx, + sp, + make_path_vec(cx, @~"Conv"), + ~[ + {ident: intr.intern(@~"flags"), ex: flags_expr}, + {ident: intr.intern(@~"width"), ex: width_expr}, + {ident: intr.intern(@~"precision"), ex: precision_expr}, + {ident: intr.intern(@~"ty"), ex: ty_expr}, + ] + ) } let rt_conv_flags = make_flags(cx, sp, cnv.flags); let rt_conv_width = make_count(cx, sp, cnv.width); let rt_conv_precision = make_count(cx, sp, cnv.precision); let rt_conv_ty = make_ty(cx, sp, cnv.ty); - return make_conv_rec(cx, sp, rt_conv_flags, rt_conv_width, - rt_conv_precision, rt_conv_ty); + make_conv_struct(cx, sp, rt_conv_flags, rt_conv_width, + rt_conv_precision, rt_conv_ty) } fn make_conv_call(cx: ext_ctxt, sp: span, conv_type: ~str, cnv: Conv, arg: @ast::expr) -> @ast::expr { |
