Auto merge of #41847 - alexcrichton:less-unstable-annotations, r=eddyb
rustc: Add a new `-Z force-unstable-if-unmarked` flag This commit adds a new `-Z` flag to the compiler for use when bootstrapping the compiler itself. We want to be able to use crates.io crates, but we also want the usage of such crates to be as ergonomic as possible! To that end compiler crates are a little tricky in that the crates.io crates are not annotated as unstable, nor do they expect to pull in unstable dependencies. To cover all these situations it's intended that the compiler will forever now bootstrap with `-Z force-unstable-if-unmarked`. This flags serves a dual purpose of forcing crates.io crates to themselves be unstable while also allowing them to use other "unstable" crates.io crates. This should mean that adding a dependency to compiler no longer requires upstream modification with unstable/staged_api attributes for inclusion!
This commit is contained in:
commit
4f3886abf1
43 changed files with 201 additions and 140 deletions
|
|
@ -194,6 +194,8 @@ fn main() {
|
|||
// do that we pass a weird flag to the compiler to get it to do
|
||||
// so. Note that this is definitely a hack, and we should likely
|
||||
// flesh out rpath support more fully in the future.
|
||||
//
|
||||
// FIXME: remove condition after next stage0
|
||||
if stage != "0" {
|
||||
cmd.arg("-Z").arg("osx-rpath-install-name");
|
||||
}
|
||||
|
|
@ -218,6 +220,17 @@ fn main() {
|
|||
cmd.arg("-Z").arg("unstable-options");
|
||||
cmd.arg("-C").arg("target-feature=+crt-static");
|
||||
}
|
||||
|
||||
// Force all crates compiled by this compiler to (a) be unstable and (b)
|
||||
// allow the `rustc_private` feature to link to other unstable crates
|
||||
// also in the sysroot.
|
||||
//
|
||||
// FIXME: remove condition after next stage0
|
||||
if env::var_os("RUSTC_FORCE_UNSTABLE").is_some() {
|
||||
if stage != "0" {
|
||||
cmd.arg("-Z").arg("force-unstable-if-unmarked");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if verbose > 1 {
|
||||
|
|
|
|||
|
|
@ -479,7 +479,8 @@ impl Build {
|
|||
// compiled with debuginfo.
|
||||
if mode != Mode::Tool {
|
||||
cargo.env("RUSTC_DEBUGINFO", self.config.rust_debuginfo.to_string())
|
||||
.env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string());
|
||||
.env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string())
|
||||
.env("RUSTC_FORCE_UNSTABLE", "1");
|
||||
}
|
||||
|
||||
// Enable usage of unstable features
|
||||
|
|
@ -524,7 +525,9 @@ impl Build {
|
|||
// the comipiler, libs, and tests are stable and we don't want to make
|
||||
// their deps unstable (since this would break the first invariant
|
||||
// above).
|
||||
if mode != Mode::Tool {
|
||||
//
|
||||
// FIXME: remove this after next stage0
|
||||
if mode != Mode::Tool && stage == 0 {
|
||||
cargo.env("RUSTBUILD_UNSTABLE", "1");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
//! objects of a single type.
|
||||
|
||||
#![crate_name = "arena"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
#![feature(core_intrinsics)]
|
||||
#![feature(dropck_eyepatch)]
|
||||
#![feature(generic_param_attrs)]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![cfg_attr(test, feature(test))]
|
||||
|
||||
#![allow(deprecated)]
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
//! [mz]: https://code.google.com/p/miniz/
|
||||
|
||||
#![crate_name = "flate"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
#![deny(warnings)]
|
||||
|
||||
#![feature(libc)]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![feature(unique)]
|
||||
#![cfg_attr(test, feature(rand))]
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
//! generated instead.
|
||||
|
||||
#![crate_name = "fmt_macros"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
test(attr(deny(warnings))))]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![feature(unicode)]
|
||||
|
||||
pub use self::Piece::*;
|
||||
|
|
|
|||
|
|
@ -78,9 +78,9 @@
|
|||
//! ```
|
||||
|
||||
#![crate_name = "getopts"]
|
||||
#![unstable(feature = "rustc_private",
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private",
|
||||
reason = "use the crates.io `getopts` library instead",
|
||||
issue = "27812")]
|
||||
issue = "27812"))]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
|
||||
#![deny(missing_docs)]
|
||||
#![deny(warnings)]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
use self::Name::*;
|
||||
use self::HasArg::*;
|
||||
|
|
|
|||
|
|
@ -284,8 +284,8 @@
|
|||
//! * [DOT language](http://www.graphviz.org/doc/info/lang.html)
|
||||
|
||||
#![crate_name = "graphviz"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
//! }
|
||||
//! ```
|
||||
#![crate_name = "proc_macro_plugin"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![feature(plugin_registrar)]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
|
|
@ -81,9 +81,9 @@
|
|||
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
|
||||
extern crate rustc_plugin;
|
||||
extern crate syntax;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -36,15 +35,17 @@
|
|||
#![feature(nonzero)]
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(slice_patterns)]
|
||||
#![feature(specialization)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(unboxed_closures)]
|
||||
#![feature(discriminant_value)]
|
||||
#![feature(sort_unstable)]
|
||||
#![feature(trace_macros)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#![recursion_limit="128"]
|
||||
|
||||
extern crate arena;
|
||||
|
|
|
|||
|
|
@ -233,7 +233,6 @@ pub trait CrateStore {
|
|||
fn export_macros(&self, cnum: CrateNum);
|
||||
fn lang_items(&self, cnum: CrateNum) -> Vec<(DefIndex, usize)>;
|
||||
fn missing_lang_items(&self, cnum: CrateNum) -> Vec<lang_items::LangItem>;
|
||||
fn is_staged_api(&self, cnum: CrateNum) -> bool;
|
||||
fn is_allocator(&self, cnum: CrateNum) -> bool;
|
||||
fn is_panic_runtime(&self, cnum: CrateNum) -> bool;
|
||||
fn is_compiler_builtins(&self, cnum: CrateNum) -> bool;
|
||||
|
|
@ -356,7 +355,6 @@ impl CrateStore for DummyCrateStore {
|
|||
{ bug!("lang_items") }
|
||||
fn missing_lang_items(&self, cnum: CrateNum) -> Vec<lang_items::LangItem>
|
||||
{ bug!("missing_lang_items") }
|
||||
fn is_staged_api(&self, cnum: CrateNum) -> bool { bug!("is_staged_api") }
|
||||
fn dep_kind(&self, cnum: CrateNum) -> DepKind { bug!("is_explicitly_linked") }
|
||||
fn export_macros(&self, cnum: CrateNum) { bug!("export_macros") }
|
||||
fn is_allocator(&self, cnum: CrateNum) -> bool { bug!("is_allocator") }
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@
|
|||
|
||||
pub use self::StabilityLevel::*;
|
||||
|
||||
use hir::map as hir_map;
|
||||
use lint;
|
||||
use hir::def::Def;
|
||||
use hir::def_id::{CrateNum, CRATE_DEF_INDEX, DefId, DefIndex, LOCAL_CRATE};
|
||||
use ty::{self, TyCtxt};
|
||||
use middle::privacy::AccessLevels;
|
||||
use session::Session;
|
||||
use syntax::symbol::Symbol;
|
||||
use syntax_pos::{Span, DUMMY_SP};
|
||||
use syntax::ast;
|
||||
|
|
@ -123,7 +123,7 @@ impl<'a, 'tcx: 'a> Annotator<'a, 'tcx> {
|
|||
item_sp: Span, kind: AnnotationKind, visit_children: F)
|
||||
where F: FnOnce(&mut Self)
|
||||
{
|
||||
if self.index.staged_api[&LOCAL_CRATE] && self.tcx.sess.features.borrow().staged_api {
|
||||
if self.index.staged_api[&LOCAL_CRATE] {
|
||||
debug!("annotate(id = {:?}, attrs = {:?})", id, attrs);
|
||||
if let Some(..) = attr::find_deprecation(self.tcx.sess.diagnostic(), attrs, item_sp) {
|
||||
self.tcx.sess.span_err(item_sp, "`#[deprecated]` cannot be used in staged api, \
|
||||
|
|
@ -390,20 +390,36 @@ impl<'a, 'tcx> Index<'tcx> {
|
|||
parent_depr: None,
|
||||
in_trait_impl: false,
|
||||
};
|
||||
|
||||
// If the `-Z force-unstable-if-unmarked` flag is passed then we provide
|
||||
// a parent stability annotation which indicates that this is private
|
||||
// with the `rustc_private` feature. This is intended for use when
|
||||
// compiling librustc crates themselves so we can leverage crates.io
|
||||
// while maintaining the invariant that all sysroot crates are unstable
|
||||
// by default and are unable to be used.
|
||||
if tcx.sess.opts.debugging_opts.force_unstable_if_unmarked {
|
||||
let reason = "this crate is being loaded from the sysroot, and \
|
||||
unstable location; did you mean to load this crate \
|
||||
from crates.io via `Cargo.toml` instead?";
|
||||
let stability = tcx.intern_stability(Stability {
|
||||
level: attr::StabilityLevel::Unstable {
|
||||
reason: Some(Symbol::intern(reason)),
|
||||
issue: 27812,
|
||||
},
|
||||
feature: Symbol::intern("rustc_private"),
|
||||
rustc_depr: None,
|
||||
});
|
||||
annotator.parent_stab = Some(stability);
|
||||
}
|
||||
|
||||
annotator.annotate(ast::CRATE_NODE_ID, &krate.attrs, krate.span, AnnotationKind::Required,
|
||||
|v| intravisit::walk_crate(v, krate));
|
||||
}
|
||||
|
||||
pub fn new(hir_map: &hir_map::Map) -> Index<'tcx> {
|
||||
let krate = hir_map.krate();
|
||||
|
||||
let mut is_staged_api = false;
|
||||
for attr in &krate.attrs {
|
||||
if attr.path == "stable" || attr.path == "unstable" {
|
||||
is_staged_api = true;
|
||||
break
|
||||
}
|
||||
}
|
||||
pub fn new(sess: &Session) -> Index<'tcx> {
|
||||
let is_staged_api =
|
||||
sess.opts.debugging_opts.force_unstable_if_unmarked ||
|
||||
sess.features.borrow().staged_api;
|
||||
|
||||
let mut staged_api = FxHashMap();
|
||||
staged_api.insert(LOCAL_CRATE, is_staged_api);
|
||||
|
|
@ -496,8 +512,10 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
let is_staged_api = *self.stability.borrow_mut().staged_api.entry(def_id.krate)
|
||||
.or_insert_with(|| self.sess.cstore.is_staged_api(def_id.krate));
|
||||
let is_staged_api = self.lookup_stability(DefId {
|
||||
index: CRATE_DEF_INDEX,
|
||||
..def_id
|
||||
}).is_some();
|
||||
if !is_staged_api {
|
||||
return;
|
||||
}
|
||||
|
|
@ -530,15 +548,32 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
|
|||
|
||||
match stability {
|
||||
Some(&Stability { level: attr::Unstable {ref reason, issue}, ref feature, .. }) => {
|
||||
if !self.stability.borrow().active_features.contains(feature) {
|
||||
let msg = match *reason {
|
||||
Some(ref r) => format!("use of unstable library feature '{}': {}",
|
||||
feature.as_str(), &r),
|
||||
None => format!("use of unstable library feature '{}'", &feature)
|
||||
};
|
||||
emit_feature_err(&self.sess.parse_sess, &feature.as_str(), span,
|
||||
GateIssue::Library(Some(issue)), &msg);
|
||||
if self.stability.borrow().active_features.contains(feature) {
|
||||
return
|
||||
}
|
||||
|
||||
// When we're compiling the compiler itself we may pull in
|
||||
// crates from crates.io, but those crates may depend on other
|
||||
// crates also pulled in from crates.io. We want to ideally be
|
||||
// able to compile everything without requiring upstream
|
||||
// modifications, so in the case that this looks like a
|
||||
// rustc_private crate (e.g. a compiler crate) and we also have
|
||||
// the `-Z force-unstable-if-unmarked` flag present (we're
|
||||
// compiling a compiler crate), then let this missing feature
|
||||
// annotation slide.
|
||||
if *feature == "rustc_private" && issue == 27812 {
|
||||
if self.sess.opts.debugging_opts.force_unstable_if_unmarked {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
let msg = match *reason {
|
||||
Some(ref r) => format!("use of unstable library feature '{}': {}",
|
||||
feature.as_str(), &r),
|
||||
None => format!("use of unstable library feature '{}'", &feature)
|
||||
};
|
||||
emit_feature_err(&self.sess.parse_sess, &feature.as_str(), span,
|
||||
GateIssue::Library(Some(issue)), &msg);
|
||||
}
|
||||
Some(_) => {
|
||||
// Stable APIs are always ok to call and deprecated APIs are
|
||||
|
|
@ -658,7 +693,7 @@ pub fn check_unused_or_stable_features<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
|
|||
|
||||
let access_levels = &tcx.privacy_access_levels(LOCAL_CRATE);
|
||||
|
||||
if tcx.stability.borrow().staged_api[&LOCAL_CRATE] && tcx.sess.features.borrow().staged_api {
|
||||
if tcx.stability.borrow().staged_api[&LOCAL_CRATE] {
|
||||
let krate = tcx.hir.krate();
|
||||
let mut missing = MissingStabilityAnnotations {
|
||||
tcx: tcx,
|
||||
|
|
|
|||
|
|
@ -1027,6 +1027,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
|||
"add a source pattern to the file path remapping config"),
|
||||
remap_path_prefix_to: Vec<String> = (vec![], parse_string_push, [TRACKED],
|
||||
"add a mapping target to the file path remapping config"),
|
||||
force_unstable_if_unmarked: bool = (false, parse_bool, [TRACKED],
|
||||
"force all crates to be `rustc_private` unstable"),
|
||||
}
|
||||
|
||||
pub fn default_lib_output() -> CrateType {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
//! build speedups.
|
||||
|
||||
#![crate_name = "rustc_back"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -34,10 +33,12 @@
|
|||
#![feature(const_fn)]
|
||||
#![feature(libc)]
|
||||
#![feature(rand)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(test, feature(rand))]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate syntax;
|
||||
extern crate libc;
|
||||
extern crate serialize;
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@
|
|||
|
||||
#![crate_name = "rustc_bitflags"]
|
||||
#![feature(associated_consts)]
|
||||
#![feature(staged_api)]
|
||||
#![crate_type = "rlib"]
|
||||
#![no_std]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![deny(warnings)]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
//! A typesafe bitmask flag generator.
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_borrowck"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -21,10 +20,13 @@
|
|||
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(associated_consts)]
|
||||
#![feature(nonzero)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use] extern crate log;
|
||||
#[macro_use] extern crate syntax;
|
||||
extern crate syntax_pos;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_const_eval"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -23,8 +22,6 @@
|
|||
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(slice_patterns)]
|
||||
#![feature(box_patterns)]
|
||||
|
|
@ -32,6 +29,10 @@
|
|||
#![feature(const_fn)]
|
||||
#![feature(i128_type)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate arena;
|
||||
#[macro_use] extern crate syntax;
|
||||
#[macro_use] extern crate log;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_const_math"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -23,12 +22,14 @@
|
|||
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(const_fn)]
|
||||
#![feature(i128)]
|
||||
#![feature(i128_type)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate syntax;
|
||||
|
||||
extern crate serialize as rustc_serialize; // used by deriving
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_data_structures"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -28,8 +27,6 @@
|
|||
#![feature(shared)]
|
||||
#![feature(collections_range)]
|
||||
#![feature(nonzero)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(unboxed_closures)]
|
||||
#![feature(fn_traits)]
|
||||
#![feature(untagged_unions)]
|
||||
|
|
@ -42,6 +39,10 @@
|
|||
#![feature(manually_drop)]
|
||||
#![feature(struct_field_attributes)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#![cfg_attr(unix, feature(libc))]
|
||||
#![cfg_attr(test, feature(test))]
|
||||
|
||||
|
|
|
|||
|
|
@ -882,7 +882,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
|
|||
"static item recursion checking",
|
||||
|| static_recursion::check_crate(sess, &hir_map))?;
|
||||
|
||||
let index = stability::Index::new(&hir_map);
|
||||
let index = stability::Index::new(&sess);
|
||||
|
||||
let mut local_providers = ty::maps::Providers::default();
|
||||
borrowck::provide(&mut local_providers);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_driver"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -28,9 +27,11 @@
|
|||
#![feature(libc)]
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(set_stdio)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate arena;
|
||||
extern crate getopts;
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ fn test_env<F>(source_string: &str,
|
|||
// run just enough stuff to build a tcx:
|
||||
let lang_items = lang_items::collect_language_items(&sess, &hir_map);
|
||||
let named_region_map = resolve_lifetime::krate(&sess, &hir_map);
|
||||
let index = stability::Index::new(&hir_map);
|
||||
let index = stability::Index::new(&sess);
|
||||
TyCtxt::create_and_enter(&sess,
|
||||
ty::maps::Providers::default(),
|
||||
ty::maps::Providers::default(),
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_errors"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -19,11 +18,13 @@
|
|||
|
||||
#![feature(custom_attribute)]
|
||||
#![allow(unused_attributes)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(range_contains)]
|
||||
#![feature(libc)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate term;
|
||||
extern crate libc;
|
||||
extern crate serialize as rustc_serialize;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
//! Support for serializing the dep-graph and reloading it.
|
||||
|
||||
#![crate_name = "rustc_incremental"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -19,12 +18,14 @@
|
|||
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(rand)]
|
||||
#![feature(conservative_impl_trait)]
|
||||
#![feature(sort_unstable)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate graphviz;
|
||||
#[macro_use] extern crate rustc;
|
||||
extern crate rustc_data_structures;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_lint"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -34,9 +33,11 @@
|
|||
#![feature(i128_type)]
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(slice_patterns)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use]
|
||||
extern crate syntax;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
#![allow(dead_code)]
|
||||
|
||||
#![crate_name = "rustc_llvm"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -27,10 +26,12 @@
|
|||
#![feature(concat_idents)]
|
||||
#![feature(libc)]
|
||||
#![feature(link_args)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(static_nobundle)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate libc;
|
||||
#[macro_use]
|
||||
#[no_link]
|
||||
|
|
|
|||
|
|
@ -269,15 +269,6 @@ impl CrateMetadata {
|
|||
self.root.disambiguator
|
||||
}
|
||||
|
||||
pub fn is_staged_api(&self, dep_graph: &DepGraph) -> bool {
|
||||
for attr in self.get_item_attrs(CRATE_DEF_INDEX, dep_graph).iter() {
|
||||
if attr.path == "stable" || attr.path == "unstable" {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
pub fn is_allocator(&self, dep_graph: &DepGraph) -> bool {
|
||||
let attrs = self.get_item_attrs(CRATE_DEF_INDEX, dep_graph);
|
||||
attr::contains_name(&attrs, "allocator")
|
||||
|
|
|
|||
|
|
@ -229,11 +229,6 @@ impl CrateStore for cstore::CStore {
|
|||
self.get_crate_data(cnum).get_missing_lang_items(&self.dep_graph)
|
||||
}
|
||||
|
||||
fn is_staged_api(&self, cnum: CrateNum) -> bool
|
||||
{
|
||||
self.get_crate_data(cnum).is_staged_api(&self.dep_graph)
|
||||
}
|
||||
|
||||
fn is_allocator(&self, cnum: CrateNum) -> bool
|
||||
{
|
||||
self.get_crate_data(cnum).is_allocator(&self.dep_graph)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_metadata"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -24,10 +23,12 @@
|
|||
#![feature(proc_macro_internals)]
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(specialization)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(discriminant_value)]
|
||||
#![feature(rustc_private)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
|
|
|
|||
|
|
@ -18,18 +18,19 @@ Rust MIR: a lowered representation of Rust. Also: an experiment!
|
|||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![deny(warnings)]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
|
||||
#![feature(associated_consts)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(i128_type)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(placement_in_syntax)]
|
||||
#![feature(collection_placement)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use] extern crate log;
|
||||
extern crate graphviz as dot;
|
||||
#[macro_use]
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_passes"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -24,8 +23,10 @@
|
|||
#![deny(warnings)]
|
||||
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(rustc_private)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use]
|
||||
extern crate rustc;
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_platform_intrinsics"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![deny(warnings)]
|
||||
#![allow(bad_style)]
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@
|
|||
//! for more examples.
|
||||
|
||||
#![crate_name = "rustc_plugin"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -59,9 +58,11 @@
|
|||
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(staged_api)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use] extern crate syntax;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_privacy"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -18,8 +17,10 @@
|
|||
#![deny(warnings)]
|
||||
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate rustc;
|
||||
#[macro_use] extern crate syntax;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_resolve"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -19,8 +18,10 @@
|
|||
|
||||
#![feature(associated_consts)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_save_analysis"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -19,8 +18,10 @@
|
|||
|
||||
#![feature(custom_attribute)]
|
||||
#![allow(unused_attributes)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use] extern crate rustc;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "rustc_trans"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -33,12 +32,14 @@
|
|||
#![feature(libc)]
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(slice_patterns)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(unicode)]
|
||||
#![feature(conservative_impl_trait)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
use rustc::dep_graph::WorkProduct;
|
||||
use syntax_pos::symbol::Symbol;
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ This API is completely unstable and subject to change.
|
|||
*/
|
||||
|
||||
#![crate_name = "rustc_typeck"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -81,8 +80,10 @@ This API is completely unstable and subject to change.
|
|||
#![feature(never_type)]
|
||||
#![feature(quote)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
#[macro_use] extern crate log;
|
||||
#[macro_use] extern crate syntax;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustdoc"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -21,14 +20,16 @@
|
|||
#![feature(box_patterns)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(libc)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(set_stdio)]
|
||||
#![feature(slice_patterns)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(test)]
|
||||
#![feature(unicode)]
|
||||
#![feature(vec_remove_item)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate arena;
|
||||
extern crate getopts;
|
||||
extern crate env_logger;
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ Core encoding and decoding interfaces.
|
|||
*/
|
||||
|
||||
#![crate_name = "serialize"]
|
||||
#![unstable(feature = "rustc_private",
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private",
|
||||
reason = "deprecated in favor of rustc-serialize on crates.io",
|
||||
issue = "27812")]
|
||||
issue = "27812"))]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -32,7 +32,7 @@ Core encoding and decoding interfaces.
|
|||
#![feature(core_intrinsics)]
|
||||
#![feature(i128_type)]
|
||||
#![feature(specialization)]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![cfg_attr(test, feature(test))]
|
||||
|
||||
extern crate collections;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "syntax"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -24,12 +23,14 @@
|
|||
test(attr(deny(warnings))))]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(unicode)]
|
||||
#![feature(rustc_diagnostic_macros)]
|
||||
#![feature(i128_type)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate serialize;
|
||||
#[macro_use] extern crate log;
|
||||
#[macro_use] extern crate bitflags;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
//! Syntax extensions in the Rust compiler.
|
||||
|
||||
#![crate_name = "syntax_ext"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -20,8 +19,10 @@
|
|||
#![deny(warnings)]
|
||||
|
||||
#![feature(proc_macro_internals)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
extern crate fmt_macros;
|
||||
extern crate log;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![crate_name = "syntax_pos"]
|
||||
#![unstable(feature = "rustc_private", issue = "27812")]
|
||||
#![crate_type = "dylib"]
|
||||
#![crate_type = "rlib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -27,10 +26,12 @@
|
|||
#![feature(custom_attribute)]
|
||||
#![feature(optin_builtin_traits)]
|
||||
#![allow(unused_attributes)]
|
||||
#![feature(rustc_private)]
|
||||
#![feature(staged_api)]
|
||||
#![feature(specialization)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
use std::cell::{Cell, RefCell};
|
||||
use std::ops::{Add, Sub};
|
||||
use std::rc::Rc;
|
||||
|
|
|
|||
|
|
@ -41,9 +41,6 @@
|
|||
//! [ti]: https://en.wikipedia.org/wiki/Terminfo
|
||||
|
||||
#![crate_name = "term"]
|
||||
#![unstable(feature = "rustc_private",
|
||||
reason = "use the crates.io `term` library instead",
|
||||
issue = "27812")]
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "dylib"]
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
|
|
@ -54,13 +51,15 @@
|
|||
#![deny(missing_docs)]
|
||||
#![deny(warnings)]
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(staged_api)]
|
||||
#![cfg_attr(windows, feature(libc))]
|
||||
// Handle rustfmt skips
|
||||
#![feature(custom_attribute)]
|
||||
#![allow(unused_attributes)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
|
||||
use std::io::prelude::*;
|
||||
|
||||
pub use terminfo::TerminfoTerminal;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue