diff options
Diffstat (limited to 'compiler/rustc_index')
| -rw-r--r-- | compiler/rustc_index/Cargo.toml | 8 | ||||
| -rw-r--r-- | compiler/rustc_index/src/lib.rs | 17 | ||||
| -rw-r--r-- | compiler/rustc_index/src/vec.rs | 5 | 
3 files changed, 21 insertions, 9 deletions
| diff --git a/compiler/rustc_index/Cargo.toml b/compiler/rustc_index/Cargo.toml index d8ea5aa80b8..e1cda5a9edd 100644 --- a/compiler/rustc_index/Cargo.toml +++ b/compiler/rustc_index/Cargo.toml @@ -7,6 +7,10 @@ edition = "2021" [dependencies] arrayvec = { version = "0.7", default-features = false } -rustc_serialize = { path = "../rustc_serialize" } -rustc_macros = { path = "../rustc_macros" } +rustc_serialize = { path = "../rustc_serialize", optional = true } +rustc_macros = { path = "../rustc_macros", optional = true } smallvec = "1.8.1" + +[features] +default = ["nightly"] +nightly = ["rustc_serialize", "rustc_macros"] diff --git a/compiler/rustc_index/src/lib.rs b/compiler/rustc_index/src/lib.rs index 23a4c1f0696..03d8ee13918 100644 --- a/compiler/rustc_index/src/lib.rs +++ b/compiler/rustc_index/src/lib.rs @@ -1,17 +1,20 @@ #![deny(rustc::untranslatable_diagnostic)] #![deny(rustc::diagnostic_outside_of_impl)] -#![feature(allow_internal_unstable)] -#![feature(extend_one)] -#![feature(min_specialization)] -#![feature(new_uninit)] -#![feature(step_trait)] -#![feature(stmt_expr_attributes)] -#![feature(test)] +#![cfg_attr(feature = "nightly", feature(allow_internal_unstable))] +#![cfg_attr(feature = "nightly", feature(extend_one))] +#![cfg_attr(feature = "nightly", feature(min_specialization))] +#![cfg_attr(feature = "nightly", feature(new_uninit))] +#![cfg_attr(feature = "nightly", feature(step_trait))] +#![cfg_attr(feature = "nightly", feature(stmt_expr_attributes))] +#![cfg_attr(feature = "nightly", feature(test))] +#[cfg(feature = "nightly")] pub mod bit_set; +#[cfg(feature = "nightly")] pub mod interval; pub mod vec; +#[cfg(feature = "rustc_macros")] pub use rustc_macros::newtype_index; /// Type size assertion. The first argument is a type and the second argument is its expected size. diff --git a/compiler/rustc_index/src/vec.rs b/compiler/rustc_index/src/vec.rs index 1519258c794..39aa27a23c1 100644 --- a/compiler/rustc_index/src/vec.rs +++ b/compiler/rustc_index/src/vec.rs @@ -1,3 +1,4 @@ +#[cfg(feature = "rustc_serialize")] use rustc_serialize::{Decodable, Decoder, Encodable, Encoder}; use std::fmt; @@ -61,12 +62,14 @@ pub struct IndexVec<I: Idx, T> { // not the phantom data. unsafe impl<I: Idx, T> Send for IndexVec<I, T> where T: Send {} +#[cfg(feature = "rustc_serialize")] impl<S: Encoder, I: Idx, T: Encodable<S>> Encodable<S> for IndexVec<I, T> { fn encode(&self, s: &mut S) { Encodable::encode(&self.raw, s); } } +#[cfg(feature = "rustc_serialize")] impl<D: Decoder, I: Idx, T: Decodable<D>> Decodable<D> for IndexVec<I, T> { fn decode(d: &mut D) -> Self { IndexVec { raw: Decodable::decode(d), _marker: PhantomData } @@ -359,11 +362,13 @@ impl<I: Idx, T> Extend<T> for IndexVec<I, T> { } #[inline] + #[cfg(feature = "nightly")] fn extend_one(&mut self, item: T) { self.raw.push(item); } #[inline] + #[cfg(feature = "nightly")] fn extend_reserve(&mut self, additional: usize) { self.raw.reserve(additional); } | 
