Skip to content

Commit c087aaf

Browse files
committed
When we cons up vector asts, generate evecs.
1 parent a71a49f commit c087aaf

File tree

4 files changed

+28
-8
lines changed

4 files changed

+28
-8
lines changed

src/libsyntax/ext/build.rs

+10
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,16 @@ fn mk_vec_e(cx: ext_ctxt, sp: span, exprs: [@ast::expr]) ->
6161
let vecexpr = ast::expr_vec(exprs, ast::m_imm);
6262
ret @{id: cx.next_id(), node: vecexpr, span: sp};
6363
}
64+
fn mk_vstore_e(cx: ext_ctxt, sp: span, expr: @ast::expr, vst: ast::vstore) ->
65+
@ast::expr {
66+
let vstoreexpr = ast::expr_vstore(expr, vst);
67+
ret @{id: cx.next_id(), node: vstoreexpr, span: sp};
68+
}
69+
fn mk_uniq_vec_e(cx: ext_ctxt, sp: span, exprs: [@ast::expr]/~) ->
70+
@ast::expr {
71+
mk_vstore_e(cx, sp, mk_vec_e(cx, sp, exprs), ast::vstore_uniq)
72+
}
73+
6474
fn mk_rec_e(cx: ext_ctxt, sp: span,
6575
fields: [{ident: ast::ident, ex: @ast::expr}]) ->
6676
@ast::expr {

src/libsyntax/ext/fmt.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ fn pieces_to_expr(cx: ext_ctxt, sp: span, pieces: [piece], args: [@ast::expr])
6161
}
6262
flagexprs += [make_rt_path_expr(cx, sp, @fstr)];
6363
}
64-
ret mk_vec_e(cx, sp, flagexprs);
64+
ret mk_uniq_vec_e(cx, sp, flagexprs);
6565
}
6666
fn make_count(cx: ext_ctxt, sp: span, cnt: count) -> @ast::expr {
6767
alt cnt {

src/libsyntax/ext/qquote.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ fn finish<T: qq_helper>
258258
rcall = mk_call(cx,sp,
259259
[@"syntax", @"ext", @"qquote", @"replace"],
260260
[pcall,
261-
mk_vec_e(cx,sp, qcx.gather.map_to_vec {|g|
261+
mk_uniq_vec_e(cx,sp, qcx.gather.map_to_vec {|g|
262262
mk_call(cx,sp,
263263
[@"syntax", @"ext",
264264
@"qquote", @g.constr],

src/rustc/front/test.rs

+16-6
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,11 @@ fn mk_test_desc_vec_ty(cx: test_ctxt) -> @ast::ty {
265265

266266
let vec_mt: ast::mt = {ty: @test_desc_ty, mutbl: ast::m_imm};
267267

268+
let inner_ty = @{id: cx.sess.next_node_id(),
269+
node: ast::ty_vec(vec_mt),
270+
span: dummy_sp()};
268271
ret @{id: cx.sess.next_node_id(),
269-
node: ast::ty_vec(vec_mt),
272+
node: ast::ty_vstore(inner_ty, ast::vstore_uniq),
270273
span: dummy_sp()};
271274
}
272275

@@ -277,8 +280,11 @@ fn mk_test_desc_vec(cx: test_ctxt) -> @ast::expr {
277280
descs += [mk_test_desc_rec(cx, test)];
278281
}
279282

283+
let inner_expr = @{id: cx.sess.next_node_id(),
284+
node: ast::expr_vec(descs, ast::m_imm),
285+
span: dummy_sp()};
280286
ret @{id: cx.sess.next_node_id(),
281-
node: ast::expr_vec(descs, ast::m_imm),
287+
node: ast::expr_vstore(inner_expr, ast::vstore_uniq),
282288
span: dummy_sp()};
283289
}
284290

@@ -384,10 +390,14 @@ fn mk_main(cx: test_ctxt) -> @ast::item {
384390
let str_ty = @{id: cx.sess.next_node_id(),
385391
node: ast::ty_path(str_pt, cx.sess.next_node_id()),
386392
span: dummy_sp()};
387-
let args_mt: ast::mt = {ty: str_ty, mutbl: ast::m_imm};
388-
let args_ty: ast::ty = {id: cx.sess.next_node_id(),
389-
node: ast::ty_vec(args_mt),
390-
span: dummy_sp()};
393+
let args_mt = {ty: str_ty, mutbl: ast::m_imm};
394+
let args_ty_inner = @{id: cx.sess.next_node_id(),
395+
node: ast::ty_vec(args_mt),
396+
span: dummy_sp()};
397+
let args_ty = {id: cx.sess.next_node_id(),
398+
node: ast::ty_vstore(args_ty_inner, ast::vstore_uniq),
399+
span: dummy_sp()};
400+
391401

392402
let args_arg: ast::arg =
393403
{mode: ast::expl(ast::by_val),

0 commit comments

Comments
 (0)