]> git.proxmox.com Git - rustc.git/blame - src/librustc/lib.rs
New upstream version 1.19.0+dfsg3
[rustc.git] / src / librustc / lib.rs
CommitLineData
1a4d82fc
JJ
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"]
1a4d82fc
JJ
18#![crate_type = "dylib"]
19#![crate_type = "rlib"]
e9174d1e 20#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
7453a54e
SL
21 html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
22 html_root_url = "https://doc.rust-lang.org/nightly/")]
32a655c1 23#![deny(warnings)]
1a4d82fc 24
d9579d0f 25#![feature(associated_consts)]
85aaf69f 26#![feature(box_patterns)]
1a4d82fc 27#![feature(box_syntax)]
9e0c209e 28#![feature(conservative_impl_trait)]
62682a34 29#![feature(const_fn)]
3157f602 30#![feature(core_intrinsics)]
7cac9316 31#![feature(discriminant_value)]
8bb4bdeb 32#![feature(i128_type)]
85aaf69f 33#![feature(libc)]
cc61c64b 34#![feature(never_type)]
e9174d1e 35#![feature(nonzero)]
85aaf69f 36#![feature(quote)]
1a4d82fc 37#![feature(rustc_diagnostic_macros)]
d9579d0f 38#![feature(slice_patterns)]
8bb4bdeb 39#![feature(specialization)]
476ff2be 40#![feature(unboxed_closures)]
cc61c64b
XL
41#![feature(discriminant_value)]
42#![feature(sort_unstable)]
7cac9316
XL
43#![feature(trace_macros)]
44
45#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
46#![cfg_attr(stage0, feature(rustc_private))]
47#![cfg_attr(stage0, feature(staged_api))]
48#![cfg_attr(stage0, feature(loop_break_value))]
49
50#![recursion_limit="256"]
1a4d82fc
JJ
51
52extern crate arena;
e9174d1e 53extern crate core;
85aaf69f 54extern crate fmt_macros;
1a4d82fc
JJ
55extern crate getopts;
56extern crate graphviz;
57extern crate libc;
7cac9316 58extern crate owning_ref;
1a4d82fc 59extern crate rustc_back;
d9579d0f 60extern crate rustc_data_structures;
1a4d82fc 61extern crate serialize;
54a0048b 62extern crate rustc_const_math;
3157f602 63extern crate rustc_errors as errors;
1a4d82fc
JJ
64#[macro_use] extern crate log;
65#[macro_use] extern crate syntax;
32a655c1 66extern crate syntax_pos;
85aaf69f 67#[macro_use] #[no_link] extern crate rustc_bitflags;
1a4d82fc 68
c34b1796 69extern crate serialize as rustc_serialize; // used by deriving
1a4d82fc 70
9346a6ac
AL
71#[macro_use]
72mod macros;
73
85aaf69f
SL
74// NB: This module needs to be declared first so diagnostics are
75// registered before they are used.
76pub mod diagnostics;
1a4d82fc 77
54a0048b 78pub mod cfg;
9cc50fc6 79pub mod dep_graph;
54a0048b 80pub mod hir;
cc61c64b 81pub mod ich;
54a0048b
SL
82pub mod infer;
83pub mod lint;
62682a34 84
1a4d82fc 85pub mod middle {
32a655c1 86 pub mod expr_use_visitor;
54a0048b 87 pub mod const_val;
92a42be0 88 pub mod cstore;
1a4d82fc
JJ
89 pub mod dataflow;
90 pub mod dead;
1a4d82fc
JJ
91 pub mod dependency_format;
92 pub mod effect;
93 pub mod entry;
bd371182 94 pub mod free_region;
1a4d82fc 95 pub mod intrinsicck;
1a4d82fc
JJ
96 pub mod lang_items;
97 pub mod liveness;
98 pub mod mem_categorization;
1a4d82fc
JJ
99 pub mod privacy;
100 pub mod reachable;
101 pub mod region;
102 pub mod recursion_limit;
103 pub mod resolve_lifetime;
104 pub mod stability;
1a4d82fc
JJ
105 pub mod weak_lang_items;
106}
107
c30ab7b3 108pub mod mir;
1a4d82fc 109pub mod session;
54a0048b
SL
110pub mod traits;
111pub mod ty;
1a4d82fc
JJ
112
113pub mod util {
1a4d82fc
JJ
114 pub mod common;
115 pub mod ppaux;
116 pub mod nodemap;
d9579d0f 117 pub mod fs;
1a4d82fc
JJ
118}
119
1a4d82fc
JJ
120// A private module so that macro-expanded idents like
121// `::rustc::lint::Lint` will also work in `rustc` itself.
122//
123// `libstd` uses the same trick.
124#[doc(hidden)]
125mod rustc {
126 pub use lint;
127}
d9579d0f 128
e9174d1e
SL
129// FIXME(#27438): right now the unit tests of librustc don't refer to any actual
130// functions generated in librustc_data_structures (all
131// references are through generic functions), but statics are
132// referenced from time to time. Due to this bug we won't
133// actually correctly link in the statics unless we also
134// reference a function, so be sure to reference a dummy
135// function.
136#[test]
137fn noop() {
138 rustc_data_structures::__noop_fix_for_27438();
139}
140
141
d9579d0f 142// Build the diagnostics array at the end so that the metadata includes error use sites.
d9579d0f 143__build_diagnostic_array! { librustc, DIAGNOSTICS }