summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2013-01-25 22:57:29 -0800
committerTim Chevalier <chevalier@alum.wellesley.edu>2013-01-28 19:41:55 -0800
commit6cbccc92b757e4b52fb75416e8bb589e981ed237 (patch)
treeebb4c4a8396b706ed88a6f8fa6ec25c8638986e5 /src
parentdb6af50d533527e77a73630c16138c1c5864d58e (diff)
downloadrust-6cbccc92b757e4b52fb75416e8bb589e981ed237.tar.gz
rust-6cbccc92b757e4b52fb75416e8bb589e981ed237.zip
rustc: In lint, forbid structural records unless legacy_records is on
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/lint.rs34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs
index 515666445e3..f1188dce741 100644
--- a/src/librustc/middle/lint.rs
+++ b/src/librustc/middle/lint.rs
@@ -213,7 +213,7 @@ fn get_lint_dict() -> lint_dict {
         (~"structural_records",
          @{lint: structural_records,
            desc: "use of any structural records",
-           default: allow}),
+           default: deny}),
 
         (~"legacy modes",
          @{lint: legacy_modes,
@@ -663,21 +663,23 @@ fn check_item_deprecated_self(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);
+    if !cx.legacy_records {
+        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) {