diff options
| author | Michael Sullivan <sully@msully.net> | 2012-06-25 20:00:39 -0700 |
|---|---|---|
| committer | Michael Sullivan <sully@msully.net> | 2012-06-25 20:00:39 -0700 |
| commit | c087aaf56b1109163126fea4c2760f8414ffbe56 (patch) | |
| tree | eee16f0a8b1fe0f766c176180db481aba5482752 /src/libsyntax | |
| parent | a71a49faa83631bc7e74a25ac65ac711b28799d9 (diff) | |
| download | rust-c087aaf56b1109163126fea4c2760f8414ffbe56.tar.gz rust-c087aaf56b1109163126fea4c2760f8414ffbe56.zip | |
When we cons up vector asts, generate evecs.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/build.rs | 10 | ||||
| -rw-r--r-- | src/libsyntax/ext/fmt.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/qquote.rs | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index 69f7f2b69cd..4e0c6889092 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -61,6 +61,16 @@ fn mk_vec_e(cx: ext_ctxt, sp: span, exprs: [@ast::expr]) -> let vecexpr = ast::expr_vec(exprs, ast::m_imm); ret @{id: cx.next_id(), node: vecexpr, span: sp}; } +fn mk_vstore_e(cx: ext_ctxt, sp: span, expr: @ast::expr, vst: ast::vstore) -> + @ast::expr { + let vstoreexpr = ast::expr_vstore(expr, vst); + ret @{id: cx.next_id(), node: vstoreexpr, span: sp}; +} +fn mk_uniq_vec_e(cx: ext_ctxt, sp: span, exprs: [@ast::expr]/~) -> + @ast::expr { + mk_vstore_e(cx, sp, mk_vec_e(cx, sp, exprs), ast::vstore_uniq) +} + fn mk_rec_e(cx: ext_ctxt, sp: span, fields: [{ident: ast::ident, ex: @ast::expr}]) -> @ast::expr { diff --git a/src/libsyntax/ext/fmt.rs b/src/libsyntax/ext/fmt.rs index 0cc4ba0a570..24a5aed7d28 100644 --- a/src/libsyntax/ext/fmt.rs +++ b/src/libsyntax/ext/fmt.rs @@ -61,7 +61,7 @@ fn pieces_to_expr(cx: ext_ctxt, sp: span, pieces: [piece], args: [@ast::expr]) } flagexprs += [make_rt_path_expr(cx, sp, @fstr)]; } - ret mk_vec_e(cx, sp, flagexprs); + ret mk_uniq_vec_e(cx, sp, flagexprs); } fn make_count(cx: ext_ctxt, sp: span, cnt: count) -> @ast::expr { alt cnt { diff --git a/src/libsyntax/ext/qquote.rs b/src/libsyntax/ext/qquote.rs index 3f3eb001250..caef1841faf 100644 --- a/src/libsyntax/ext/qquote.rs +++ b/src/libsyntax/ext/qquote.rs @@ -258,7 +258,7 @@ fn finish<T: qq_helper> rcall = mk_call(cx,sp, [@"syntax", @"ext", @"qquote", @"replace"], [pcall, - mk_vec_e(cx,sp, qcx.gather.map_to_vec {|g| + mk_uniq_vec_e(cx,sp, qcx.gather.map_to_vec {|g| mk_call(cx,sp, [@"syntax", @"ext", @"qquote", @g.constr], |
