Skip to content

Commit 98bc2b2

Browse files
committed
---
yaml --- r: 36638 b: refs/heads/try2 c: a0d7b96 h: refs/heads/master v: v3
1 parent 56c105a commit 98bc2b2

File tree

7 files changed

+47
-7
lines changed

7 files changed

+47
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: eb8fd119c65c67f3b1b8268cc7341c22d39b7b61
55
refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: a7f29b34989284f4ab604ad8a742dfffcf367c97
8+
refs/heads/try2: a0d7b961706f1f808e7dd244e8bbd9515c073196
99
refs/heads/incoming: d9317a174e434d4c99fc1a37fd7dc0d2f5328d37
1010
refs/heads/dist-snap: 22efa39382d41b084fde1719df7ae8ce5697d8c9
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596

branches/try2/src/librustc/middle/lint.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ enum lint {
6060
unrecognized_lint,
6161
non_implicitly_copyable_typarams,
6262
vecs_implicitly_copyable,
63+
deprecated_item,
6364
deprecated_mode,
6465
deprecated_pattern,
6566
non_camel_case_types,
@@ -157,6 +158,11 @@ fn get_lint_dict() -> lint_dict {
157158
desc: ~"implicit copies of non implicitly copyable data",
158159
default: warn}),
159160

161+
(~"deprecated_item",
162+
@{lint: deprecated_item,
163+
desc: ~"warn about items marked deprecated",
164+
default: warn}),
165+
160166
(~"deprecated_mode",
161167
@{lint: deprecated_mode,
162168
desc: ~"warn about deprecated uses of modes",
@@ -412,6 +418,7 @@ fn check_item(i: @ast::item, cx: ty::ctxt) {
412418
check_item_non_camel_case_types(cx, i);
413419
check_item_heap(cx, i);
414420
check_item_structural_records(cx, i);
421+
check_item_deprecated(cx, i);
415422
check_item_deprecated_modes(cx, i);
416423
check_item_type_limits(cx, i);
417424
}
@@ -767,6 +774,26 @@ fn check_item_non_camel_case_types(cx: ty::ctxt, it: @ast::item) {
767774
}
768775
}
769776

777+
fn check_item_deprecated(tcx: ty::ctxt, it: @ast::item) {
778+
let at = attr::find_attrs_by_name(it.attrs, ~"deprecated");
779+
780+
if at.is_not_empty() {
781+
for at.each |attr| {
782+
let fmt = match attr.node.value.node {
783+
ast::meta_name_value(_, ref l) =>
784+
match l.node {
785+
ast::lit_str(ref reason) =>
786+
fmt!("deprecated: %s", **reason),
787+
_ => ~"item is deprecated"
788+
},
789+
_ => ~"item is deprecated"
790+
};
791+
tcx.sess.span_lint(deprecated_item, it.id, it.id, it.span,
792+
fmt);
793+
}
794+
}
795+
}
796+
770797
fn check_fn(tcx: ty::ctxt, fk: visit::fn_kind, decl: ast::fn_decl,
771798
_body: ast::blk, span: span, id: ast::node_id) {
772799
debug!("lint check_fn fk=%? id=%?", fk, id);

branches/try2/src/libsyntax/attr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ fn find_attrs_by_name(attrs: ~[ast::attribute], name: ~str) ->
182182
return vec::filter_map(attrs, filter);
183183
}
184184

185-
/// Searcha list of meta items and return only those with a specific name
185+
/// Search a list of meta items and return only those with a specific name
186186
fn find_meta_items_by_name(metas: ~[@ast::meta_item], name: ~str) ->
187187
~[@ast::meta_item] {
188188
let filter = fn@(m: &@ast::meta_item) -> Option<@ast::meta_item> {

branches/try2/src/test/auxiliary/crate-method-reexport-grrrrrrr2.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ mod name_pool {
2222
mod rust {
2323
#[legacy_exports];
2424

25-
use name_pool::add;
25+
import name_pool::add;
26+
// FIXME #3155: this is a hack
27+
import name_pool::__extensions__;
2628
export add;
2729
export rt;
2830
export cx;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
fn main() {
2-
fn baz(_x: fn(y: int) -> int) {}
2+
fn baz(_x: fn() -> int) {}
33
for baz |_e| { } //~ ERROR should return `bool`
44
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#[forbid(deprecated_item)];
2+
3+
type Bar = uint;
4+
5+
#[deprecated = "use Bar instead"]
6+
type Foo = int;
7+
8+
fn main() {
9+
let _x: Foo = 21;
10+
}

branches/try2/src/test/run-pass/crate-method-reexport-grrrrrrr.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
// name_pool::methods impl in the other crate is reachable from this
33
// crate.
44

5+
// xfail-test
56
// xfail-fast
67
// aux-build:crate-method-reexport-grrrrrrr2.rs
78

8-
extern mod crate_method_reexport_grrrrrrr2;
9+
use crate_method_reexport_grrrrrrr2;
910

1011
fn main() {
11-
use crate_method_reexport_grrrrrrr2::rust::add;
12-
use crate_method_reexport_grrrrrrr2::rust::cx;
12+
import crate_method_reexport_grrrrrrr2::rust::add;
13+
import crate_method_reexport_grrrrrrr2::rust::cx;
1314
let x = @();
1415
x.cx();
1516
let y = ();

0 commit comments

Comments
 (0)