]> git.lizzy.rs Git - rust.git/blob - src/librustc_metadata/lib.rs
Rollup merge of #58296 - estebank:hidden-suggestion, r=oli-obk
[rust.git] / src / librustc_metadata / lib.rs
1 #![doc(html_root_url = "https://doc.rust-lang.org/nightly/")]
2
3 #![feature(box_patterns)]
4 #![feature(libc)]
5 #![feature(nll)]
6 #![feature(proc_macro_internals)]
7 #![feature(proc_macro_quote)]
8 #![feature(rustc_diagnostic_macros)]
9 #![feature(slice_sort_by_cached_key)]
10 #![feature(crate_visibility_modifier)]
11 #![feature(specialization)]
12 #![feature(rustc_private)]
13
14 #![recursion_limit="256"]
15
16 #![deny(rust_2018_idioms)]
17
18 extern crate libc;
19 #[allow(unused_extern_crates)]
20 extern crate serialize as rustc_serialize; // used by deriving
21 extern crate proc_macro;
22
23 #[macro_use]
24 extern crate rustc;
25 #[macro_use]
26 extern crate rustc_data_structures;
27
28 mod diagnostics;
29
30 mod index_builder;
31 mod index;
32 mod encoder;
33 mod decoder;
34 mod cstore_impl;
35 mod isolated_encoder;
36 mod schema;
37 mod native_libs;
38 mod link_args;
39 mod foreign_modules;
40
41 pub mod creader;
42 pub mod cstore;
43 pub mod dynamic_lib;
44 pub mod locator;
45
46 pub fn validate_crate_name(
47     sess: Option<&rustc::session::Session>,
48     s: &str,
49     sp: Option<syntax_pos::Span>
50 ) {
51     let mut err_count = 0;
52     {
53         let mut say = |s: &str| {
54             match (sp, sess) {
55                 (_, None) => bug!("{}", s),
56                 (Some(sp), Some(sess)) => sess.span_err(sp, s),
57                 (None, Some(sess)) => sess.err(s),
58             }
59             err_count += 1;
60         };
61         if s.is_empty() {
62             say("crate name must not be empty");
63         }
64         for c in s.chars() {
65             if c.is_alphanumeric() { continue }
66             if c == '_'  { continue }
67             say(&format!("invalid character `{}` in crate name: `{}`", c, s));
68         }
69     }
70
71     if err_count > 0 {
72         sess.unwrap().abort_if_errors();
73     }
74 }
75
76 __build_diagnostic_array! { librustc_metadata, DIAGNOSTICS }