Skip to content

Commit 954ae9c

Browse files
committed
libsyntax: Remove struct literal expressions from the compiler
1 parent 4e3dbfe commit 954ae9c

File tree

19 files changed

+24
-143
lines changed

19 files changed

+24
-143
lines changed

src/librustc/middle/check_const.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,7 @@ pub fn check_expr(sess: Session,
162162
expr_field(*) |
163163
expr_index(*) |
164164
expr_tup(*) |
165-
expr_struct(_, _, None) |
166-
expr_rec(_, None) => { }
165+
expr_struct(_, _, None) => { }
167166
expr_addr_of(*) => {
168167
sess.span_err(
169168
e.span,

src/librustc/middle/const_eval.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,7 @@ pub fn classify(e: @expr,
117117
}
118118
}
119119

120-
ast::expr_struct(_, ref fs, None) |
121-
ast::expr_rec(ref fs, None) => {
120+
ast::expr_struct(_, ref fs, None) => {
122121
let cs = do vec::map((*fs)) |f| {
123122
if f.node.mutbl == ast::m_imm {
124123
classify(f.node.expr, def_map, tcx)

src/librustc/middle/lint.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ pub enum lint {
7373
deprecated_mode,
7474
deprecated_pattern,
7575
non_camel_case_types,
76-
structural_records,
7776
type_limits,
7877
default_methods,
7978
deprecated_self,
@@ -217,13 +216,6 @@ pub fn get_lint_dict() -> LintDict {
217216
default: allow
218217
}),
219218

220-
(@~"structural_records",
221-
@LintSpec {
222-
lint: structural_records,
223-
desc: "use of any structural records",
224-
default: deny
225-
}),
226-
227219
(@~"legacy modes",
228220
@LintSpec {
229221
lint: legacy_modes,
@@ -486,7 +478,6 @@ fn check_item(i: @ast::item, cx: ty::ctxt) {
486478
check_item_path_statement(cx, i);
487479
check_item_non_camel_case_types(cx, i);
488480
check_item_heap(cx, i);
489-
check_item_structural_records(cx, i);
490481
check_item_deprecated_modes(cx, i);
491482
check_item_type_limits(cx, i);
492483
check_item_default_methods(cx, i);
@@ -729,24 +720,6 @@ fn check_item_deprecated_mutable_fields(cx: ty::ctxt, item: @ast::item) {
729720
}
730721
}
731722

732-
fn check_item_structural_records(cx: ty::ctxt, it: @ast::item) {
733-
let visit = item_stopping_visitor(
734-
visit::mk_simple_visitor(@visit::SimpleVisitor {
735-
visit_expr: |e: @ast::expr| {
736-
match e.node {
737-
ast::expr_rec(*) =>
738-
cx.sess.span_lint(
739-
structural_records, e.id, it.id,
740-
e.span,
741-
~"structural records are deprecated"),
742-
_ => ()
743-
}
744-
},
745-
.. *visit::default_simple_visitor()
746-
}));
747-
visit::visit_item(it, (), visit);
748-
}
749-
750723
fn check_item_ctypes(cx: ty::ctxt, it: @ast::item) {
751724

752725
fn check_foreign_fn(cx: ty::ctxt, fn_id: ast::node_id,

src/librustc/middle/liveness.rs

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -615,16 +615,13 @@ fn visit_expr(expr: @expr, &&self: @mut IrMaps, vt: vt<@mut IrMaps>) {
615615
}
616616

617617
// otherwise, live nodes are not required:
618-
expr_index(*) | expr_field(*) | expr_vstore(*) |
619-
expr_vec(*) | expr_rec(*) | expr_call(*) | expr_method_call(*) |
620-
expr_tup(*) | expr_log(*) | expr_binary(*) |
621-
expr_assert(*) | expr_addr_of(*) | expr_copy(*) |
622-
expr_loop_body(*) | expr_do_body(*) | expr_cast(*) |
623-
expr_unary(*) |
618+
expr_index(*) | expr_field(*) | expr_vstore(*) | expr_vec(*) |
619+
expr_call(*) | expr_method_call(*) | expr_tup(*) | expr_log(*) |
620+
expr_binary(*) | expr_assert(*) | expr_addr_of(*) | expr_copy(*) |
621+
expr_loop_body(*) | expr_do_body(*) | expr_cast(*) | expr_unary(*) |
624622
expr_break(_) | expr_again(_) | expr_lit(_) | expr_ret(*) |
625-
expr_block(*) | expr_assign(*) |
626-
expr_swap(*) | expr_assign_op(*) | expr_mac(*) | expr_struct(*) |
627-
expr_repeat(*) | expr_paren(*) => {
623+
expr_block(*) | expr_assign(*) | expr_swap(*) | expr_assign_op(*) |
624+
expr_mac(*) | expr_struct(*) | expr_repeat(*) | expr_paren(*) => {
628625
visit::visit_expr(expr, self, vt);
629626
}
630627
}
@@ -1287,13 +1284,6 @@ pub impl Liveness {
12871284
self.propagate_through_expr(element, succ)
12881285
}
12891286

1290-
expr_rec(ref fields, with_expr) => {
1291-
let succ = self.propagate_through_opt_expr(with_expr, succ);
1292-
do (*fields).foldr(succ) |field, succ| {
1293-
self.propagate_through_expr(field.node.expr, succ)
1294-
}
1295-
}
1296-
12971287
expr_struct(_, ref fields, with_expr) => {
12981288
let succ = self.propagate_through_opt_expr(with_expr, succ);
12991289
do (*fields).foldr(succ) |field, succ| {
@@ -1618,18 +1608,14 @@ fn check_expr(expr: @expr, &&self: @Liveness, vt: vt<@Liveness>) {
16181608
}
16191609

16201610
// no correctness conditions related to liveness
1621-
expr_call(*) | expr_method_call(*) |
1622-
expr_if(*) | expr_match(*) |
1623-
expr_while(*) | expr_loop(*) |
1624-
expr_index(*) | expr_field(*) | expr_vstore(*) |
1625-
expr_vec(*) | expr_rec(*) | expr_tup(*) |
1626-
expr_log(*) | expr_binary(*) |
1627-
expr_assert(*) | expr_copy(*) |
1628-
expr_loop_body(*) | expr_do_body(*) |
1629-
expr_cast(*) | expr_unary(*) |
1630-
expr_ret(*) | expr_break(*) | expr_again(*) | expr_lit(_) |
1631-
expr_block(*) | expr_swap(*) | expr_mac(*) | expr_addr_of(*) |
1632-
expr_struct(*) | expr_repeat(*) | expr_paren(*) => {
1611+
expr_call(*) | expr_method_call(*) | expr_if(*) | expr_match(*) |
1612+
expr_while(*) | expr_loop(*) | expr_index(*) | expr_field(*) |
1613+
expr_vstore(*) | expr_vec(*) | expr_tup(*) | expr_log(*) |
1614+
expr_binary(*) | expr_assert(*) | expr_copy(*) | expr_loop_body(*) |
1615+
expr_do_body(*) | expr_cast(*) | expr_unary(*) | expr_ret(*) |
1616+
expr_break(*) | expr_again(*) | expr_lit(_) | expr_block(*) |
1617+
expr_swap(*) | expr_mac(*) | expr_addr_of(*) | expr_struct(*) |
1618+
expr_repeat(*) | expr_paren(*) => {
16331619
visit::visit_expr(expr, self, vt);
16341620
}
16351621
}

src/librustc/middle/mem_categorization.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,8 +449,7 @@ pub impl mem_categorization_ctxt {
449449
ast::expr_binary(*) | ast::expr_while(*) |
450450
ast::expr_block(*) | ast::expr_loop(*) | ast::expr_match(*) |
451451
ast::expr_lit(*) | ast::expr_break(*) | ast::expr_mac(*) |
452-
ast::expr_again(*) | ast::expr_rec(*) | ast::expr_struct(*) |
453-
ast::expr_repeat(*) => {
452+
ast::expr_again(*) | ast::expr_struct(*) | ast::expr_repeat(*) => {
454453
return self.cat_rvalue(expr, expr_ty);
455454
}
456455
}

src/librustc/middle/moves.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,6 @@ pub impl VisitContext {
469469
self.use_fn_args(expr.callee_id, *args, visitor);
470470
}
471471

472-
expr_rec(ref fields, opt_with) |
473472
expr_struct(_, ref fields, opt_with) => {
474473
for fields.each |field| {
475474
self.consume_expr(field.node.expr, visitor);

src/librustc/middle/trans/consts.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,6 @@ fn const_expr_unchecked(cx: @CrateContext, e: @ast::expr) -> ValueRef {
368368
let repr = adt::represent_type(cx, ety);
369369
adt::trans_const(cx, repr, 0, es.map(|e| const_expr(cx, *e)))
370370
}
371-
ast::expr_rec(ref fs, None) => {
372-
let ety = ty::expr_ty(cx.tcx, e);
373-
let repr = adt::represent_type(cx, ety);
374-
adt::trans_const(cx, repr, 0,
375-
fs.map(|f| const_expr(cx, f.node.expr)))
376-
}
377371
ast::expr_struct(_, ref fs, None) => {
378372
let ety = ty::expr_ty(cx.tcx, e);
379373
let repr = adt::represent_type(cx, ety);

src/librustc/middle/trans/expr.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,6 @@ fn trans_rvalue_dps_unadjusted(bcx: block, expr: @ast::expr,
599599
controlflow::trans_block(bcx, blk, dest)
600600
};
601601
}
602-
ast::expr_rec(ref fields, base) |
603602
ast::expr_struct(_, ref fields, base) => {
604603
return trans_rec_or_struct(bcx, (*fields), base, expr.id, dest);
605604
}

src/librustc/middle/trans/type_use.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -263,12 +263,9 @@ pub fn mark_for_method_call(cx: Context, e_id: node_id, callee_id: node_id) {
263263

264264
pub fn mark_for_expr(cx: Context, e: @expr) {
265265
match e.node {
266-
expr_vstore(_, _) |
267-
expr_vec(_, _) |
268-
expr_rec(_, _) | expr_struct(*) | expr_tup(_) |
266+
expr_vstore(_, _) | expr_vec(_, _) | expr_struct(*) | expr_tup(_) |
269267
expr_unary(box(_), _) | expr_unary(uniq(_), _) |
270-
expr_binary(add, _, _) |
271-
expr_copy(_) | expr_repeat(*) => {
268+
expr_binary(add, _, _) | expr_copy(_) | expr_repeat(*) => {
272269
node_type_needs(cx, use_repr, e.id);
273270
}
274271
expr_cast(base, _) => {

src/librustc/middle/ty.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3066,7 +3066,6 @@ pub fn expr_kind(tcx: ctxt,
30663066

30673067
ast::expr_call(*) |
30683068
ast::expr_method_call(*) |
3069-
ast::expr_rec(*) |
30703069
ast::expr_struct(*) |
30713070
ast::expr_tup(*) |
30723071
ast::expr_if(*) |

0 commit comments

Comments
 (0)