]> git.lizzy.rs Git - rust.git/blob - src/librustc/lib.rs
Add ffi::OsString and OsStr
[rust.git] / src / librustc / lib.rs
1 // Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 //! The Rust compiler.
12 //!
13 //! # Note
14 //!
15 //! This API is completely unstable and subject to change.
16
17 #![crate_name = "rustc"]
18 #![unstable]
19 #![staged_api]
20 #![crate_type = "dylib"]
21 #![crate_type = "rlib"]
22 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
23       html_favicon_url = "http://www.rust-lang.org/favicon.ico",
24       html_root_url = "http://doc.rust-lang.org/nightly/")]
25
26 #![allow(unknown_features)]
27 #![feature(quote)]
28 #![feature(slicing_syntax, unsafe_destructor)]
29 #![feature(box_syntax)]
30 #![allow(unknown_features)] #![feature(int_uint)]
31 #![feature(rustc_diagnostic_macros)]
32 #![allow(unstable)]
33
34 extern crate arena;
35 extern crate flate;
36 extern crate fmt_macros;
37 extern crate getopts;
38 extern crate graphviz;
39 extern crate libc;
40 extern crate regex;
41 extern crate rustc_llvm;
42 extern crate rustc_back;
43 extern crate serialize;
44 extern crate rbml;
45 extern crate collections;
46 #[macro_use] extern crate log;
47 #[macro_use] extern crate syntax;
48 #[macro_use] #[no_link] extern crate rustc_bitflags;
49
50 extern crate "serialize" as rustc_serialize; // used by deriving
51
52 #[cfg(test)]
53 extern crate test;
54
55 pub use rustc_llvm as llvm;
56
57 // NB: This module needs to be declared first so diagnostics are
58 // registered before they are used.
59 pub mod diagnostics;
60
61 pub mod back {
62     pub use rustc_back::abi;
63     pub use rustc_back::archive;
64     pub use rustc_back::arm;
65     pub use rustc_back::mips;
66     pub use rustc_back::mipsel;
67     pub use rustc_back::rpath;
68     pub use rustc_back::svh;
69     pub use rustc_back::target_strs;
70     pub use rustc_back::x86;
71     pub use rustc_back::x86_64;
72 }
73
74 pub mod middle {
75     pub mod astconv_util;
76     pub mod astencode;
77     pub mod cfg;
78     pub mod check_const;
79     pub mod check_static_recursion;
80     pub mod check_loop;
81     pub mod check_match;
82     pub mod check_rvalues;
83     pub mod check_static;
84     pub mod const_eval;
85     pub mod dataflow;
86     pub mod dead;
87     pub mod def;
88     pub mod dependency_format;
89     pub mod effect;
90     pub mod entry;
91     pub mod expr_use_visitor;
92     pub mod fast_reject;
93     pub mod graph;
94     pub mod intrinsicck;
95     pub mod infer;
96     pub mod lang_items;
97     pub mod liveness;
98     pub mod mem_categorization;
99     pub mod pat_util;
100     pub mod privacy;
101     pub mod reachable;
102     pub mod region;
103     pub mod recursion_limit;
104     pub mod resolve_lifetime;
105     pub mod stability;
106     pub mod subst;
107     pub mod traits;
108     pub mod ty;
109     pub mod ty_fold;
110     pub mod ty_walk;
111     pub mod weak_lang_items;
112 }
113
114 pub mod metadata;
115
116 pub mod session;
117
118 pub mod plugin;
119
120 pub mod lint;
121
122 pub mod util {
123     pub use rustc_back::fs;
124     pub use rustc_back::sha2;
125
126     pub mod common;
127     pub mod ppaux;
128     pub mod nodemap;
129     pub mod snapshot_vec;
130     pub mod lev_distance;
131 }
132
133 pub mod lib {
134     pub use llvm;
135 }
136
137 // A private module so that macro-expanded idents like
138 // `::rustc::lint::Lint` will also work in `rustc` itself.
139 //
140 // `libstd` uses the same trick.
141 #[doc(hidden)]
142 mod rustc {
143     pub use lint;
144 }