Skip to content

Commit a71a49f

Browse files
committed
Split deprecated str and vec warnings into two flags, enable old_vecs by default.
1 parent 1c5e2ca commit a71a49f

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/rustc/middle/lint.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ enum lint {
4747
non_implicitly_copyable_typarams,
4848
vecs_not_implicitly_copyable,
4949
implicit_copies,
50+
old_strs,
5051
}
5152

5253
// This is pretty unfortunate. We really want some sort of "deriving Enum"
@@ -62,6 +63,7 @@ fn int_to_lint(i: int) -> lint {
6263
6 { non_implicitly_copyable_typarams }
6364
7 { vecs_not_implicitly_copyable }
6465
8 { implicit_copies }
66+
9 { old_strs }
6567
}
6668
}
6769

@@ -103,7 +105,12 @@ fn get_lint_dict() -> lint_dict {
103105

104106
("old_vecs",
105107
@{lint: old_vecs,
106-
desc: "old (deprecated) vectors and strings",
108+
desc: "old (deprecated) vectors",
109+
default: warn}),
110+
111+
("old_strs",
112+
@{lint: old_strs,
113+
desc: "old (deprecated) strings",
107114
default: ignore}),
108115

109116
("unrecognized_warning",
@@ -419,13 +426,19 @@ fn check_item_old_vecs(cx: ty::ctxt, it: @ast::item) {
419426

420427
visit_expr:fn@(e: @ast::expr) {
421428
alt e.node {
422-
ast::expr_vec(_, _) |
423-
ast::expr_lit(@{node: ast::lit_str(_), span:_})
429+
ast::expr_vec(_, _)
424430
if ! uses_vstore.contains_key(e.id) {
425431
cx.sess.span_lint(
426432
old_vecs, e.id, it.id,
427-
e.span, "deprecated vec/str expr");
433+
e.span, "deprecated vec expr");
428434
}
435+
ast::expr_lit(@{node: ast::lit_str(_), span:_})
436+
if ! uses_vstore.contains_key(e.id) {
437+
cx.sess.span_lint(
438+
old_strs, e.id, it.id,
439+
e.span, "deprecated str expr");
440+
}
441+
429442
ast::expr_vstore(@inner, _) {
430443
uses_vstore.insert(inner.id, true);
431444
}
@@ -441,15 +454,13 @@ fn check_item_old_vecs(cx: ty::ctxt, it: @ast::item) {
441454
old_vecs, t.id, it.id,
442455
t.span, "deprecated vec type");
443456
}
444-
445457
ast::ty_path(@{span: _, global: _, idents: ids,
446458
rp: none, types: _}, _)
447459
if ids == [@"str"] && (! uses_vstore.contains_key(t.id)) {
448460
cx.sess.span_lint(
449-
old_vecs, t.id, it.id,
461+
old_strs, t.id, it.id,
450462
t.span, "deprecated str type");
451463
}
452-
453464
ast::ty_vstore(inner, _) {
454465
uses_vstore.insert(inner.id, true);
455466
}

0 commit comments

Comments
 (0)