about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/middle/check_const.rs3
-rw-r--r--src/librustc/middle/const_eval.rs3
-rw-r--r--src/librustc/middle/lint.rs27
-rw-r--r--src/librustc/middle/liveness.rs42
-rw-r--r--src/librustc/middle/mem_categorization.rs3
-rw-r--r--src/librustc/middle/moves.rs1
-rw-r--r--src/librustc/middle/trans/consts.rs6
-rw-r--r--src/librustc/middle/trans/expr.rs1
-rw-r--r--src/librustc/middle/trans/type_use.rs7
-rw-r--r--src/librustc/middle/ty.rs1
-rw-r--r--src/librustc/middle/typeck/check/mod.rs3
-rw-r--r--src/librustc/middle/typeck/check/regionck.rs1
-rw-r--r--src/libsyntax/ast.rs1
-rw-r--r--src/libsyntax/ext/build.rs7
-rw-r--r--src/libsyntax/ext/log_syntax.rs5
-rw-r--r--src/libsyntax/fold.rs6
-rw-r--r--src/libsyntax/parse/parser.rs30
-rw-r--r--src/libsyntax/print/pprust.rs16
-rw-r--r--src/libsyntax/visit.rs4
19 files changed, 24 insertions, 143 deletions
diff --git a/src/librustc/middle/check_const.rs b/src/librustc/middle/check_const.rs
index 58099574126..9d7a041ca09 100644
--- a/src/librustc/middle/check_const.rs
+++ b/src/librustc/middle/check_const.rs
@@ -162,8 +162,7 @@ pub fn check_expr(sess: Session,
           expr_field(*) |
           expr_index(*) |
           expr_tup(*) |
-          expr_struct(_, _, None) |
-          expr_rec(_, None) => { }
+          expr_struct(_, _, None) => { }
           expr_addr_of(*) => {
                 sess.span_err(
                     e.span,
diff --git a/src/librustc/middle/const_eval.rs b/src/librustc/middle/const_eval.rs
index e54cf60495a..441e01bbc34 100644
--- a/src/librustc/middle/const_eval.rs
+++ b/src/librustc/middle/const_eval.rs
@@ -117,8 +117,7 @@ pub fn classify(e: @expr,
                   }
               }
 
-              ast::expr_struct(_, ref fs, None) |
-              ast::expr_rec(ref fs, None) => {
+              ast::expr_struct(_, ref fs, None) => {
                 let cs = do vec::map((*fs)) |f| {
                     if f.node.mutbl == ast::m_imm {
                         classify(f.node.expr, def_map, tcx)
diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs
index 7f01ed02384..7d0562e3901 100644
--- a/src/librustc/middle/lint.rs
+++ b/src/librustc/middle/lint.rs
@@ -73,7 +73,6 @@ pub enum lint {
     deprecated_mode,
     deprecated_pattern,
     non_camel_case_types,
-    structural_records,
     type_limits,
     default_methods,
     deprecated_self,
@@ -217,13 +216,6 @@ pub fn get_lint_dict() -> LintDict {
             default: allow
          }),
 
-        (@~"structural_records",
-         @LintSpec {
-            lint: structural_records,
-            desc: "use of any structural records",
-            default: deny
-         }),
-
         (@~"legacy modes",
          @LintSpec {
             lint: legacy_modes,
@@ -486,7 +478,6 @@ fn check_item(i: @ast::item, cx: ty::ctxt) {
     check_item_path_statement(cx, i);
     check_item_non_camel_case_types(cx, i);
     check_item_heap(cx, i);
-    check_item_structural_records(cx, i);
     check_item_deprecated_modes(cx, i);
     check_item_type_limits(cx, i);
     check_item_default_methods(cx, i);
@@ -729,24 +720,6 @@ fn check_item_deprecated_mutable_fields(cx: ty::ctxt, item: @ast::item) {
     }
 }
 
-fn check_item_structural_records(cx: ty::ctxt, it: @ast::item) {
-    let visit = item_stopping_visitor(
-        visit::mk_simple_visitor(@visit::SimpleVisitor {
-            visit_expr: |e: @ast::expr| {
-                match e.node {
-                    ast::expr_rec(*) =>
-                        cx.sess.span_lint(
-                            structural_records, e.id, it.id,
-                            e.span,
-                            ~"structural records are deprecated"),
-                    _ => ()
-                }
-            },
-            .. *visit::default_simple_visitor()
-        }));
-    visit::visit_item(it, (), visit);
-}
-
 fn check_item_ctypes(cx: ty::ctxt, it: @ast::item) {
 
     fn check_foreign_fn(cx: ty::ctxt, fn_id: ast::node_id,
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs
index 563864bddd3..3f054ec86a9 100644
--- a/src/librustc/middle/liveness.rs
+++ b/src/librustc/middle/liveness.rs
@@ -615,16 +615,13 @@ fn visit_expr(expr: @expr, &&self: @mut IrMaps, vt: vt<@mut IrMaps>) {
       }
 
       // otherwise, live nodes are not required:
-      expr_index(*) | expr_field(*) | expr_vstore(*) |
-      expr_vec(*) | expr_rec(*) | expr_call(*) | expr_method_call(*) |
-      expr_tup(*) | expr_log(*) | expr_binary(*) |
-      expr_assert(*) | expr_addr_of(*) | expr_copy(*) |
-      expr_loop_body(*) | expr_do_body(*) | expr_cast(*) |
-      expr_unary(*) |
+      expr_index(*) | expr_field(*) | expr_vstore(*) | expr_vec(*) |
+      expr_call(*) | expr_method_call(*) | expr_tup(*) | expr_log(*) |
+      expr_binary(*) | expr_assert(*) | expr_addr_of(*) | expr_copy(*) |
+      expr_loop_body(*) | expr_do_body(*) | expr_cast(*) | expr_unary(*) |
       expr_break(_) | expr_again(_) | expr_lit(_) | expr_ret(*) |
-      expr_block(*) | expr_assign(*) |
-      expr_swap(*) | expr_assign_op(*) | expr_mac(*) | expr_struct(*) |
-      expr_repeat(*) | expr_paren(*) => {
+      expr_block(*) | expr_assign(*) | expr_swap(*) | expr_assign_op(*) |
+      expr_mac(*) | expr_struct(*) | expr_repeat(*) | expr_paren(*) => {
           visit::visit_expr(expr, self, vt);
       }
     }
@@ -1287,13 +1284,6 @@ pub impl Liveness {
             self.propagate_through_expr(element, succ)
           }
 
-          expr_rec(ref fields, with_expr) => {
-            let succ = self.propagate_through_opt_expr(with_expr, succ);
-            do (*fields).foldr(succ) |field, succ| {
-                self.propagate_through_expr(field.node.expr, succ)
-            }
-          }
-
           expr_struct(_, ref fields, with_expr) => {
             let succ = self.propagate_through_opt_expr(with_expr, succ);
             do (*fields).foldr(succ) |field, succ| {
@@ -1618,18 +1608,14 @@ fn check_expr(expr: @expr, &&self: @Liveness, vt: vt<@Liveness>) {
       }
 
       // no correctness conditions related to liveness
-      expr_call(*) | expr_method_call(*) |
-      expr_if(*) | expr_match(*) |
-      expr_while(*) | expr_loop(*) |
-      expr_index(*) | expr_field(*) | expr_vstore(*) |
-      expr_vec(*) | expr_rec(*) | expr_tup(*) |
-      expr_log(*) | expr_binary(*) |
-      expr_assert(*) | expr_copy(*) |
-      expr_loop_body(*) | expr_do_body(*) |
-      expr_cast(*) | expr_unary(*) |
-      expr_ret(*) | expr_break(*) | expr_again(*) | expr_lit(_) |
-      expr_block(*) | expr_swap(*) | expr_mac(*) | expr_addr_of(*) |
-      expr_struct(*) | expr_repeat(*) | expr_paren(*) => {
+      expr_call(*) | expr_method_call(*) | expr_if(*) | expr_match(*) |
+      expr_while(*) | expr_loop(*) | expr_index(*) | expr_field(*) |
+      expr_vstore(*) | expr_vec(*) | expr_tup(*) | expr_log(*) |
+      expr_binary(*) | expr_assert(*) | expr_copy(*) | expr_loop_body(*) |
+      expr_do_body(*) | expr_cast(*) | expr_unary(*) | expr_ret(*) |
+      expr_break(*) | expr_again(*) | expr_lit(_) | expr_block(*) |
+      expr_swap(*) | expr_mac(*) | expr_addr_of(*) | expr_struct(*) |
+      expr_repeat(*) | expr_paren(*) => {
         visit::visit_expr(expr, self, vt);
       }
     }
diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs
index 3590840d50f..0fc55e58956 100644
--- a/src/librustc/middle/mem_categorization.rs
+++ b/src/librustc/middle/mem_categorization.rs
@@ -449,8 +449,7 @@ pub impl mem_categorization_ctxt {
           ast::expr_binary(*) | ast::expr_while(*) |
           ast::expr_block(*) | ast::expr_loop(*) | ast::expr_match(*) |
           ast::expr_lit(*) | ast::expr_break(*) | ast::expr_mac(*) |
-          ast::expr_again(*) | ast::expr_rec(*) | ast::expr_struct(*) |
-          ast::expr_repeat(*) => {
+          ast::expr_again(*) | ast::expr_struct(*) | ast::expr_repeat(*) => {
             return self.cat_rvalue(expr, expr_ty);
           }
         }
diff --git a/src/librustc/middle/moves.rs b/src/librustc/middle/moves.rs
index c3f8f94d4d4..826fc54f054 100644
--- a/src/librustc/middle/moves.rs
+++ b/src/librustc/middle/moves.rs
@@ -469,7 +469,6 @@ pub impl VisitContext {
                 self.use_fn_args(expr.callee_id, *args, visitor);
             }
 
-            expr_rec(ref fields, opt_with) |
             expr_struct(_, ref fields, opt_with) => {
                 for fields.each |field| {
                     self.consume_expr(field.node.expr, visitor);
diff --git a/src/librustc/middle/trans/consts.rs b/src/librustc/middle/trans/consts.rs
index b7a536aa3a2..6390beb3097 100644
--- a/src/librustc/middle/trans/consts.rs
+++ b/src/librustc/middle/trans/consts.rs
@@ -368,12 +368,6 @@ fn const_expr_unchecked(cx: @CrateContext, e: @ast::expr) -> ValueRef {
               let repr = adt::represent_type(cx, ety);
               adt::trans_const(cx, repr, 0, es.map(|e| const_expr(cx, *e)))
           }
-          ast::expr_rec(ref fs, None) => {
-              let ety = ty::expr_ty(cx.tcx, e);
-              let repr = adt::represent_type(cx, ety);
-              adt::trans_const(cx, repr, 0,
-                               fs.map(|f| const_expr(cx, f.node.expr)))
-          }
           ast::expr_struct(_, ref fs, None) => {
               let ety = ty::expr_ty(cx.tcx, e);
               let repr = adt::represent_type(cx, ety);
diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs
index 5278496277a..91454a91fe2 100644
--- a/src/librustc/middle/trans/expr.rs
+++ b/src/librustc/middle/trans/expr.rs
@@ -599,7 +599,6 @@ fn trans_rvalue_dps_unadjusted(bcx: block, expr: @ast::expr,
                 controlflow::trans_block(bcx, blk, dest)
             };
         }
-        ast::expr_rec(ref fields, base) |
         ast::expr_struct(_, ref fields, base) => {
             return trans_rec_or_struct(bcx, (*fields), base, expr.id, dest);
         }
diff --git a/src/librustc/middle/trans/type_use.rs b/src/librustc/middle/trans/type_use.rs
index 1b3d8f463fb..8699b4f0139 100644
--- a/src/librustc/middle/trans/type_use.rs
+++ b/src/librustc/middle/trans/type_use.rs
@@ -263,12 +263,9 @@ pub fn mark_for_method_call(cx: Context, e_id: node_id, callee_id: node_id) {
 
 pub fn mark_for_expr(cx: Context, e: @expr) {
     match e.node {
-      expr_vstore(_, _) |
-      expr_vec(_, _) |
-      expr_rec(_, _) | expr_struct(*) | expr_tup(_) |
+      expr_vstore(_, _) | expr_vec(_, _) | expr_struct(*) | expr_tup(_) |
       expr_unary(box(_), _) | expr_unary(uniq(_), _) |
-      expr_binary(add, _, _) |
-      expr_copy(_) | expr_repeat(*) => {
+      expr_binary(add, _, _) | expr_copy(_) | expr_repeat(*) => {
         node_type_needs(cx, use_repr, e.id);
       }
       expr_cast(base, _) => {
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index 213e244593a..802c9a8d20b 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -3066,7 +3066,6 @@ pub fn expr_kind(tcx: ctxt,
 
         ast::expr_call(*) |
         ast::expr_method_call(*) |
-        ast::expr_rec(*) |
         ast::expr_struct(*) |
         ast::expr_tup(*) |
         ast::expr_if(*) |
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index b5e744fabab..0c4f7a6d30f 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -2508,9 +2508,6 @@ pub fn check_expr_with_unifier(fcx: @mut FnCtxt,
         let typ = ty::mk_tup(tcx, elt_ts);
         fcx.write_ty(id, typ);
       }
-      ast::expr_rec(ref fields, base) => {
-        fail!()
-      }
       ast::expr_struct(path, ref fields, base_expr) => {
         // Resolve the path.
         match tcx.def_map.find(&id) {
diff --git a/src/librustc/middle/typeck/check/regionck.rs b/src/librustc/middle/typeck/check/regionck.rs
index 93ab5c09476..2b3931a5d6d 100644
--- a/src/librustc/middle/typeck/check/regionck.rs
+++ b/src/librustc/middle/typeck/check/regionck.rs
@@ -701,7 +701,6 @@ pub mod guarantor {
             ast::expr_cast(*) |
             ast::expr_call(*) |
             ast::expr_method_call(*) |
-            ast::expr_rec(*) |
             ast::expr_struct(*) |
             ast::expr_tup(*) |
             ast::expr_if(*) |
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index 256e48a69b3..68afa38ba89 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -564,7 +564,6 @@ pub enum CallSugar {
 pub enum expr_ {
     expr_vstore(@expr, expr_vstore),
     expr_vec(~[@expr], mutability),
-    expr_rec(~[field], Option<@expr>),
     expr_call(@expr, ~[@expr], CallSugar),
     expr_method_call(@expr, ident, ~[@Ty], ~[@expr], CallSugar),
     expr_tup(~[@expr]),
diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs
index a42564ff2ec..5d071b8d517 100644
--- a/src/libsyntax/ext/build.rs
+++ b/src/libsyntax/ext/build.rs
@@ -162,13 +162,6 @@ pub fn mk_field(sp: span, f: &Field) -> ast::field {
 pub fn mk_fields(sp: span, fields: ~[Field]) -> ~[ast::field] {
     fields.map(|f| mk_field(sp, f))
 }
-pub fn mk_rec_e(cx: ext_ctxt,
-                sp: span,
-                +fields: ~[Field])
-             -> @ast::expr {
-    mk_expr(cx, sp, ast::expr_rec(mk_fields(sp, fields),
-                                  option::None::<@ast::expr>))
-}
 pub fn mk_struct_e(cx: ext_ctxt,
                    sp: span,
                    +ctor_path: ~[ast::ident],
diff --git a/src/libsyntax/ext/log_syntax.rs b/src/libsyntax/ext/log_syntax.rs
index 9072f4bdd01..8a8583420f8 100644
--- a/src/libsyntax/ext/log_syntax.rs
+++ b/src/libsyntax/ext/log_syntax.rs
@@ -32,7 +32,10 @@ pub fn expand_syntax_ext(cx: ext_ctxt,
     MRExpr(@ast::expr {
         id: cx.next_id(),
         callee_id: cx.next_id(),
-        node: ast::expr_rec(~[], option::None),
+        node: ast::expr_lit(@codemap::spanned {
+            node: ast::lit_nil,
+            span: sp
+        }),
         span: sp,
     })
 }
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs
index 3fbc1571c1b..3ada03c08f4 100644
--- a/src/libsyntax/fold.rs
+++ b/src/libsyntax/fold.rs
@@ -479,12 +479,6 @@ pub fn noop_fold_expr(e: &expr_, fld: @ast_fold) -> expr_ {
         expr_repeat(expr, count, mutt) => {
             expr_repeat(fld.fold_expr(expr), fld.fold_expr(count), mutt)
         }
-        expr_rec(ref fields, maybe_expr) => {
-            expr_rec(
-                fields.map(|x| fold_field(*x)),
-                maybe_expr.map(|x| fld.fold_expr(*x))
-            )
-        }
         expr_tup(ref elts) => expr_tup(elts.map(|x| fld.fold_expr(*x))),
         expr_call(f, ref args, blk) => {
             expr_call(
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index b159e79a09c..498b6f3ca70 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -25,7 +25,7 @@ use ast::{expr_assert, expr_assign, expr_assign_op, expr_binary, expr_block};
 use ast::{expr_break, expr_call, expr_cast, expr_copy, expr_do_body};
 use ast::{expr_field, expr_fn_block, expr_if, expr_index};
 use ast::{expr_lit, expr_log, expr_loop, expr_loop_body, expr_mac};
-use ast::{expr_method_call, expr_paren, expr_path, expr_rec, expr_repeat};
+use ast::{expr_method_call, expr_paren, expr_path, expr_repeat};
 use ast::{expr_ret, expr_swap, expr_struct, expr_tup, expr_unary};
 use ast::{expr_vec, expr_vstore, expr_vstore_mut_box};
 use ast::{expr_vstore_fixed, expr_vstore_slice, expr_vstore_box};
@@ -1956,34 +1956,6 @@ pub impl Parser {
               self.look_ahead(2) == token::COLON))
     }
 
-    fn parse_record_literal(&self) -> expr_ {
-        self.expect(&token::LBRACE);
-        let mut fields = ~[self.parse_field(token::COLON)];
-        let mut base = None;
-        while *self.token != token::RBRACE {
-            if *self.token == token::COMMA
-                && self.look_ahead(1) == token::DOTDOT {
-                self.bump();
-                self.bump();
-                base = Some(self.parse_expr()); break;
-            }
-
-            if self.try_parse_obsolete_with() {
-                break;
-            }
-
-            self.expect(&token::COMMA);
-            if *self.token == token::RBRACE {
-                // record ends by an optional trailing comma
-                break;
-            }
-            fields.push(self.parse_field(token::COLON));
-        }
-        self.expect(&token::RBRACE);
-        self.warn(~"REC");
-        return expr_rec(fields, base);
-    }
-
     fn parse_match_expr(&self) -> @expr {
         let lo = self.last_span.lo;
         let discriminant = self.parse_expr();
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index 1d7d4d0d65f..8e26f37d7de 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -1169,22 +1169,6 @@ pub fn print_expr(s: @ps, &&expr: @ast::expr) {
         end(s);
       }
 
-      ast::expr_rec(ref fields, wth) => {
-        word(s.s, ~"{");
-        commasep_cmnt(s, consistent, (*fields), print_field, get_span);
-        match wth {
-          Some(expr) => {
-            ibox(s, indent_unit);
-            word(s.s, ~",");
-            space(s.s);
-            word(s.s, ~"..");
-            print_expr(s, expr);
-            end(s);
-          }
-          _ => word(s.s, ~",")
-        }
-        word(s.s, ~"}");
-      }
       ast::expr_struct(path, ref fields, wth) => {
         print_path(s, path, true);
         word(s.s, ~"{");
diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs
index 47fe1b5ba0b..2f086534ed5 100644
--- a/src/libsyntax/visit.rs
+++ b/src/libsyntax/visit.rs
@@ -479,10 +479,6 @@ pub fn visit_expr<E>(ex: @expr, e: E, v: vt<E>) {
             (v.visit_expr)(element, e, v);
             (v.visit_expr)(count, e, v);
         }
-        expr_rec(ref flds, base) => {
-            for flds.each |f| { (v.visit_expr)(f.node.expr, e, v); }
-            visit_expr_opt(base, e, v);
-        }
         expr_struct(p, ref flds, base) => {
             visit_path(p, e, v);
             for flds.each |f| { (v.visit_expr)(f.node.expr, e, v); }