Skip to content

Commit e90142e

Browse files
committed
Merge pull request #4498 from erickt/incoming
More records-to-structs conversions
2 parents eb8fd11 + 293cd34 commit e90142e

33 files changed

+512
-341
lines changed

src/librustc/front/config.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,19 @@ fn filter_stmt(cx: ctxt, &&stmt: @ast::stmt) ->
133133
}
134134
}
135135

136-
fn fold_block(cx: ctxt, b: ast::blk_, fld: fold::ast_fold) ->
137-
ast::blk_ {
136+
fn fold_block(
137+
cx: ctxt,
138+
b: ast::blk_,
139+
fld: fold::ast_fold
140+
) -> ast::blk_ {
138141
let filtered_stmts = vec::filter_map(b.stmts, |a| filter_stmt(cx, *a));
139-
return {view_items: /*bad*/copy b.view_items,
140-
stmts: vec::map(filtered_stmts, |x| fld.fold_stmt(*x)),
141-
expr: option::map(&b.expr, |x| fld.fold_expr(*x)),
142-
id: b.id,
143-
rules: b.rules};
142+
ast::blk_ {
143+
view_items: /*bad*/copy b.view_items,
144+
stmts: vec::map(filtered_stmts, |x| fld.fold_stmt(*x)),
145+
expr: option::map(&b.expr, |x| fld.fold_expr(*x)),
146+
id: b.id,
147+
rules: b.rules,
148+
}
144149
}
145150

146151
fn item_in_cfg(cx: ctxt, item: @ast::item) -> bool {

src/librustc/front/core_inject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ fn inject_libcore_ref(sess: Session,
6969
new_module = fld.fold_mod(new_module);
7070

7171
// XXX: Bad copy.
72-
let new_crate = { module: new_module, ..copy crate };
72+
let new_crate = ast::crate_ { module: new_module, ..copy crate };
7373
(new_crate, span)
7474
},
7575
fold_mod: |module, fld| {

src/librustc/front/intrinsic_inject.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,13 @@ fn inject_intrinsic(sess: Session, crate: @ast::crate) -> @ast::crate {
3737
let items = vec::append(~[item], crate.node.module.items);
3838

3939
@ast::spanned {
40-
node: { module: { items: items ,.. /*bad*/copy crate.node.module },
41-
.. /*bad*/copy crate.node},
40+
node: ast::crate_ {
41+
module: {
42+
items: items,
43+
.. /*bad*/copy crate.node.module
44+
},
45+
.. /*bad*/copy crate.node
46+
},
4247
.. /*bad*/copy *crate
4348
}
4449
}

src/librustc/front/test.rs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ fn fold_crate(cx: test_ctxt, c: ast::crate_, fld: fold::ast_fold) ->
113113

114114
// Add a special __test module to the crate that will contain code
115115
// generated for the test harness
116-
return {module: add_test_module(cx, /*bad*/copy folded.module),.. folded};
116+
ast::crate_ { module: add_test_module(cx, /*bad*/copy folded.module),
117+
.. folded }
117118
}
118119

119120

@@ -339,13 +340,13 @@ fn mk_test_desc_vec_ty(cx: test_ctxt) -> @ast::Ty {
339340
node: ast::ty_path(test_desc_ty_path, cx.sess.next_node_id()),
340341
span: dummy_sp()};
341342

342-
let vec_mt: ast::mt = {ty: @test_desc_ty, mutbl: ast::m_imm};
343+
let vec_mt = ast::mt {ty: @test_desc_ty, mutbl: ast::m_imm};
343344

344345
let inner_ty = @{id: cx.sess.next_node_id(),
345346
node: ast::ty_vec(vec_mt),
346347
span: dummy_sp()};
347348
return @{id: cx.sess.next_node_id(),
348-
node: ast::ty_uniq({ty: inner_ty, mutbl: ast::m_imm}),
349+
node: ast::ty_uniq(ast::mt {ty: inner_ty, mutbl: ast::m_imm}),
349350
span: dummy_sp()};
350351
}
351352

@@ -388,9 +389,11 @@ fn mk_test_desc_rec(cx: test_ctxt, test: test) -> @ast::expr {
388389
span: dummy_sp()};
389390

390391

391-
let name_field: ast::field =
392-
nospan({mutbl: ast::m_imm, ident: cx.sess.ident_of(~"name"),
393-
expr: @name_expr});
392+
let name_field = nospan(ast::field_ {
393+
mutbl: ast::m_imm,
394+
ident: cx.sess.ident_of(~"name"),
395+
expr: @name_expr,
396+
});
394397

395398
let fn_path = path_node_global(path);
396399

@@ -402,9 +405,11 @@ fn mk_test_desc_rec(cx: test_ctxt, test: test) -> @ast::expr {
402405

403406
let fn_wrapper_expr = mk_test_wrapper(cx, fn_expr, span);
404407

405-
let fn_field: ast::field =
406-
nospan({mutbl: ast::m_imm, ident: cx.sess.ident_of(~"testfn"),
407-
expr: fn_wrapper_expr});
408+
let fn_field = nospan(ast::field_ {
409+
mutbl: ast::m_imm,
410+
ident: cx.sess.ident_of(~"testfn"),
411+
expr: fn_wrapper_expr,
412+
});
408413

409414
let ignore_lit: ast::lit = nospan(ast::lit_bool(test.ignore));
410415

@@ -414,9 +419,11 @@ fn mk_test_desc_rec(cx: test_ctxt, test: test) -> @ast::expr {
414419
node: ast::expr_lit(@ignore_lit),
415420
span: span};
416421

417-
let ignore_field: ast::field =
418-
nospan({mutbl: ast::m_imm, ident: cx.sess.ident_of(~"ignore"),
419-
expr: @ignore_expr});
422+
let ignore_field = nospan(ast::field_ {
423+
mutbl: ast::m_imm,
424+
ident: cx.sess.ident_of(~"ignore"),
425+
expr: @ignore_expr,
426+
});
420427

421428
let fail_lit: ast::lit = nospan(ast::lit_bool(test.should_fail));
422429

@@ -426,10 +433,11 @@ fn mk_test_desc_rec(cx: test_ctxt, test: test) -> @ast::expr {
426433
node: ast::expr_lit(@fail_lit),
427434
span: span};
428435

429-
let fail_field: ast::field =
430-
nospan({mutbl: ast::m_imm,
431-
ident: cx.sess.ident_of(~"should_fail"),
432-
expr: @fail_expr});
436+
let fail_field = nospan(ast::field_ {
437+
mutbl: ast::m_imm,
438+
ident: cx.sess.ident_of(~"should_fail"),
439+
expr: @fail_expr,
440+
});
433441

434442
let test_desc_path =
435443
mk_path(cx, ~[cx.sess.ident_of(~"test"),
@@ -468,7 +476,7 @@ fn mk_test_wrapper(cx: test_ctxt,
468476
cf: ast::return_val
469477
};
470478

471-
let wrapper_body: ast::blk = nospan({
479+
let wrapper_body = nospan(ast::blk_ {
472480
view_items: ~[],
473481
stmts: ~[@call_stmt],
474482
expr: option::None,

src/librustc/metadata/tydecode.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ fn parse_mt(st: @pstate, conv: conv_did) -> ty::mt {
353353
'?' => { next(st); m = ast::m_const; }
354354
_ => { m = ast::m_imm; }
355355
}
356-
return {ty: parse_ty(st, conv), mutbl: m};
356+
ty::mt { ty: parse_ty(st, conv), mutbl: m }
357357
}
358358

359359
fn parse_def(st: @pstate, conv: conv_did) -> ast::def_id {

src/librustc/middle/astencode.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,10 @@ fn simplify_ast(ii: ast::inlined_item) -> ast::inlined_item {
267267
}
268268
};
269269
// XXX: Bad copy.
270-
let blk_sans_items = { stmts: stmts_sans_items,.. copy blk };
270+
let blk_sans_items = ast::blk_ {
271+
stmts: stmts_sans_items,
272+
.. copy blk
273+
};
271274
fold::noop_fold_block(blk_sans_items, fld)
272275
}
273276

src/librustc/middle/check_match.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ fn ctor_arity(cx: @MatchCheckCtxt, ctor: ctor, ty: ty::t) -> uint {
478478
}
479479

480480
fn wild() -> @pat {
481-
@{id: 0, node: pat_wild, span: ast_util::dummy_sp()}
481+
@pat {id: 0, node: pat_wild, span: ast_util::dummy_sp()}
482482
}
483483

484484
fn specialize(cx: @MatchCheckCtxt, r: ~[@pat], ctor_id: ctor, arity: uint,

src/librustc/middle/mem_categorization.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ impl &mem_categorization_ctxt {
728728
// know what type lies at the other end, so we just call it
729729
// `()` (the empty tuple).
730730

731-
let mt = {ty: ty::mk_tup(self.tcx, ~[]), mutbl: m_imm};
731+
let mt = ty::mt {ty: ty::mk_tup(self.tcx, ~[]), mutbl: m_imm};
732732
return self.cat_deref_common(node, base_cmt, deref_cnt, mt);
733733
}
734734

src/librustc/middle/trans/_match.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ fn enter_opt(bcx: block, m: &[@Match/&r], opt: &Opt, col: uint,
499499
let _indenter = indenter();
500500

501501
let tcx = bcx.tcx();
502-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
502+
let dummy = @ast::pat {id: 0, node: ast::pat_wild, span: dummy_sp()};
503503
do enter_match(bcx, tcx.def_map, m, col, val) |p| {
504504
match /*bad*/copy p.node {
505505
ast::pat_enum(_, subpats) => {
@@ -600,7 +600,7 @@ fn enter_rec_or_struct(bcx: block, dm: DefMap, m: &[@Match/&r], col: uint,
600600
bcx.val_str(val));
601601
let _indenter = indenter();
602602

603-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
603+
let dummy = @ast::pat {id: 0, node: ast::pat_wild, span: dummy_sp()};
604604
do enter_match(bcx, dm, m, col, val) |p| {
605605
match /*bad*/copy p.node {
606606
ast::pat_rec(fpats, _) | ast::pat_struct(_, fpats, _) => {
@@ -632,7 +632,7 @@ fn enter_tup(bcx: block, dm: DefMap, m: &[@Match/&r],
632632
bcx.val_str(val));
633633
let _indenter = indenter();
634634

635-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
635+
let dummy = @ast::pat {id: 0, node: ast::pat_wild, span: dummy_sp()};
636636
do enter_match(bcx, dm, m, col, val) |p| {
637637
match /*bad*/copy p.node {
638638
ast::pat_tup(elts) => {
@@ -657,7 +657,7 @@ fn enter_tuple_struct(bcx: block, dm: DefMap, m: &[@Match/&r], col: uint,
657657
bcx.val_str(val));
658658
let _indenter = indenter();
659659

660-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
660+
let dummy = @ast::pat {id: 0, node: ast::pat_wild, span: dummy_sp()};
661661
do enter_match(bcx, dm, m, col, val) |p| {
662662
match /*bad*/copy p.node {
663663
ast::pat_enum(_, Some(elts)) => Some(elts),
@@ -680,7 +680,7 @@ fn enter_box(bcx: block, dm: DefMap, m: &[@Match/&r],
680680
bcx.val_str(val));
681681
let _indenter = indenter();
682682

683-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
683+
let dummy = @ast::pat {id: 0, node: ast::pat_wild, span: dummy_sp()};
684684
do enter_match(bcx, dm, m, col, val) |p| {
685685
match p.node {
686686
ast::pat_box(sub) => {
@@ -705,7 +705,7 @@ fn enter_uniq(bcx: block, dm: DefMap, m: &[@Match/&r],
705705
bcx.val_str(val));
706706
let _indenter = indenter();
707707

708-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
708+
let dummy = @ast::pat {id: 0, node: ast::pat_wild, span: dummy_sp()};
709709
do enter_match(bcx, dm, m, col, val) |p| {
710710
match p.node {
711711
ast::pat_uniq(sub) => {
@@ -730,7 +730,7 @@ fn enter_region(bcx: block, dm: DefMap, m: &[@Match/&r],
730730
bcx.val_str(val));
731731
let _indenter = indenter();
732732

733-
let dummy = @{id: 0, node: ast::pat_wild, span: dummy_sp()};
733+
let dummy = @ast::pat { id: 0, node: ast::pat_wild, span: dummy_sp() };
734734
do enter_match(bcx, dm, m, col, val) |p| {
735735
match p.node {
736736
ast::pat_region(sub) => {
@@ -857,7 +857,7 @@ fn extract_vec_elems(bcx: block, pat_id: ast::node_id,
857857
let tail_begin = tvec::pointer_add(bcx, base, tail_offset);
858858
let tail_len = Sub(bcx, len, tail_offset);
859859
let tail_ty = ty::mk_evec(bcx.tcx(),
860-
{ty: vt.unit_ty, mutbl: ast::m_imm},
860+
ty::mt {ty: vt.unit_ty, mutbl: ast::m_imm},
861861
ty::vstore_slice(ty::re_static)
862862
);
863863
let scratch = scratch_datum(bcx, tail_ty, false);

src/librustc/middle/trans/base.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2184,7 +2184,7 @@ fn create_main_wrapper(ccx: @crate_ctxt, sp: span, main_llfn: ValueRef) {
21842184
let unit_ty = ty::mk_estr(ccx.tcx, ty::vstore_uniq);
21852185
let vecarg_ty: ty::arg =
21862186
{mode: ast::expl(ast::by_val),
2187-
ty: ty::mk_evec(ccx.tcx, {ty: unit_ty, mutbl: ast::m_imm},
2187+
ty: ty::mk_evec(ccx.tcx, ty::mt {ty: unit_ty, mutbl: ast::m_imm},
21882188
ty::vstore_uniq)};
21892189
let nt = ty::mk_nil(ccx.tcx);
21902190
let llfty = type_of_fn(ccx, ~[vecarg_ty], nt);

src/librustc/middle/trans/closure.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ fn store_environment(bcx: block,
224224
// tuple. This could be a ptr in uniq or a box or on stack,
225225
// whatever.
226226
let cbox_ty = tuplify_box_ty(tcx, cdata_ty);
227-
let cboxptr_ty = ty::mk_ptr(tcx, {ty:cbox_ty, mutbl:ast::m_imm});
227+
let cboxptr_ty = ty::mk_ptr(tcx, ty::mt {ty:cbox_ty, mutbl:ast::m_imm});
228228

229229
let llbox = PointerCast(bcx, llbox, type_of(ccx, cboxptr_ty));
230230
debug!("tuplify_box_ty = %s", ty_to_str(tcx, cbox_ty));

src/librustc/middle/trans/common.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,10 @@ fn T_opaque_vec(targ_cfg: @session::config) -> TypeRef {
945945
// representation of @T as a tuple (i.e., the ty::t version of what T_box()
946946
// returns).
947947
fn tuplify_box_ty(tcx: ty::ctxt, t: ty::t) -> ty::t {
948-
let ptr = ty::mk_ptr(tcx, {ty: ty::mk_nil(tcx), mutbl: ast::m_imm});
948+
let ptr = ty::mk_ptr(
949+
tcx,
950+
ty::mt {ty: ty::mk_nil(tcx), mutbl: ast::m_imm}
951+
);
949952
return ty::mk_tup(tcx, ~[ty::mk_uint(tcx), ty::mk_type(tcx),
950953
ptr, ptr,
951954
t]);

src/librustc/middle/trans/expr.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,8 @@ fn trans_to_datum(bcx: block, expr: @ast::expr) -> DatumBlock {
251251

252252
// this type may have a different region/mutability than the
253253
// real one, but it will have the same runtime representation
254-
let slice_ty = ty::mk_evec(tcx, {ty: unit_ty, mutbl: ast::m_imm},
254+
let slice_ty = ty::mk_evec(tcx,
255+
ty::mt { ty: unit_ty, mutbl: ast::m_imm },
255256
ty::vstore_slice(ty::re_static));
256257

257258
let scratch = scratch_datum(bcx, slice_ty, false);

src/librustc/middle/trans/machine.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use syntax::parse::token::special_idents;
2626
// nominal type that has pointers to itself in it.
2727
pub fn simplify_type(tcx: ty::ctxt, typ: ty::t) -> ty::t {
2828
fn nilptr(tcx: ty::ctxt) -> ty::t {
29-
ty::mk_ptr(tcx, {ty: ty::mk_nil(tcx), mutbl: ast::m_imm})
29+
ty::mk_ptr(tcx, ty::mt {ty: ty::mk_nil(tcx), mutbl: ast::m_imm})
3030
}
3131
fn simplifier(tcx: ty::ctxt, typ: ty::t) -> ty::t {
3232
match ty::get(typ).sty {
@@ -45,13 +45,12 @@ pub fn simplify_type(tcx: ty::ctxt, typ: ty::t) -> ty::t {
4545
let simpl_fields = (if ty::ty_dtor(tcx, did).is_present() {
4646
// remember the drop flag
4747
~[{ident: special_idents::dtor,
48-
mt: {ty: ty::mk_u8(tcx),
49-
mutbl: ast::m_mutbl}}] }
48+
mt: ty::mt {ty: ty::mk_u8(tcx), mutbl: ast::m_mutbl}}] }
5049
else { ~[] }) +
5150
do ty::lookup_struct_fields(tcx, did).map |f| {
5251
let t = ty::lookup_field_type(tcx, did, f.id, substs);
5352
{ident: f.ident,
54-
mt: {ty: simplify_type(tcx, t), mutbl: ast::m_const}}
53+
mt: ty::mt {ty: simplify_type(tcx, t), mutbl: ast::m_const}}
5554
};
5655
ty::mk_rec(tcx, simpl_fields)
5756
}

src/librustc/middle/trans/tvec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ fn trans_slice_vstore(bcx: block,
214214

215215
// Arrange for the backing array to be cleaned up.
216216
let fixed_ty = ty::mk_evec(bcx.tcx(),
217-
{ty: vt.unit_ty, mutbl: ast::m_mutbl},
217+
ty::mt {ty: vt.unit_ty, mutbl: ast::m_mutbl},
218218
ty::vstore_fixed(count));
219219
let llfixed_ty = T_ptr(type_of::type_of(bcx.ccx(), fixed_ty));
220220
let llfixed_casted = BitCast(bcx, llfixed, llfixed_ty);

0 commit comments

Comments
 (0)