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