rustc: In lint, forbid structural records unless legacy_records is on

This commit is contained in:
Tim Chevalier 2013-01-25 22:57:29 -08:00
parent db6af50d53
commit 6cbccc92b7

View file

@ -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) {