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