about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2015-05-10 11:01:46 +0530
committerManish Goregaokar <manishsmail@gmail.com>2015-05-10 11:01:46 +0530
commit87a62787232df4def8f1d100c80557d561a369f1 (patch)
tree75a406e1ed09dfec01b5a090de1643ffb0df89b8
parent459652c832815118cf78c30f7a59cea99c43d308 (diff)
parent8e8f8d9a5a35eb5875999efac7837956ed1b20da (diff)
downloadrust-87a62787232df4def8f1d100c80557d561a369f1.tar.gz
rust-87a62787232df4def8f1d100c80557d561a369f1.zip
Rollup merge of #25252 - inrustwetrust:crate-type-attribute, r=alexcrichton
Fixes the problem in #16974 with unhelpful error messages when accidentally using the wrong syntax for the `crate_type="lib"` attribute. The attribute syntax error now shows up instead of "main function not found".
-rw-r--r--src/librustc_driver/driver.rs7
-rw-r--r--src/test/compile-fail/invalid_crate_type_syntax.rs14
2 files changed, 16 insertions, 5 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index 45d81ff0f65..0073c0b0610 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -872,11 +872,8 @@ pub fn collect_crate_types(session: &Session,
                     None
                 }
                 _ => {
-                    session.add_lint(lint::builtin::UNKNOWN_CRATE_TYPES,
-                                     ast::CRATE_NODE_ID,
-                                     a.span,
-                                     "`crate_type` requires a \
-                                      value".to_string());
+                    session.span_err(a.span, "`crate_type` requires a value");
+                    session.note("for example: `#![crate_type=\"lib\"]`");
                     None
                 }
             }
diff --git a/src/test/compile-fail/invalid_crate_type_syntax.rs b/src/test/compile-fail/invalid_crate_type_syntax.rs
new file mode 100644
index 00000000000..6d42515704e
--- /dev/null
+++ b/src/test/compile-fail/invalid_crate_type_syntax.rs
@@ -0,0 +1,14 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// regression test for issue 16974
+#![crate_type(lib)]  //~ ERROR `crate_type` requires a value
+
+fn my_lib_fn() {}