Skip to content

Commit ef42db6

Browse files
committed
---
yaml --- r: 152376 b: refs/heads/try2 c: 862cd65 h: refs/heads/master v: v3
1 parent a867e19 commit ef42db6

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
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: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 42a18bd985e103484abbe801082b0593f1a43019
8+
refs/heads/try2: 862cd65dcadf34b5ab59063be151ab801fc7bfe1
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,20 @@ fn check_unused_attribute(cx: &Context, attr: &ast::Attribute) {
11241124
"unstable",
11251125
];
11261126

1127+
static CRATE_ATTRS: &'static [&'static str] = &'static [
1128+
"crate_type",
1129+
"feature",
1130+
"no_start",
1131+
"no_main",
1132+
"no_std",
1133+
"crate_id",
1134+
"desc",
1135+
"comment",
1136+
"license",
1137+
"copyright",
1138+
"no_builtins",
1139+
];
1140+
11271141
for &name in ATTRIBUTE_WHITELIST.iter() {
11281142
if attr.check_name(name) {
11291143
break;
@@ -1132,6 +1146,15 @@ fn check_unused_attribute(cx: &Context, attr: &ast::Attribute) {
11321146

11331147
if !attr::is_used(attr) {
11341148
cx.span_lint(UnusedAttribute, attr.span, "unused attribute");
1149+
if CRATE_ATTRS.contains(&attr.name().get()) {
1150+
let msg = match attr.node.style {
1151+
ast::AttrOuter => "crate-level attribute should be an inner \
1152+
attribute: add an exclamation mark: #![foo]",
1153+
ast::AttrInner => "crate-level attribute should be in the \
1154+
root module",
1155+
};
1156+
cx.span_lint(UnusedAttribute, attr.span, msg);
1157+
}
11351158
}
11361159
}
11371160

branches/try2/src/test/compile-fail/lint-misplaced-attr.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
mod a {
1717
#![crate_type = "bin"] //~ ERROR unused attribute
18+
//~^ ERROR should be in the root module
1819
}
1920

2021
#[crate_type = "bin"] fn main() {} //~ ERROR unused attribute
22+
//~^ ERROR should be an inner

0 commit comments

Comments
 (0)