diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-06-13 14:51:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-13 14:51:56 +0200 |
| commit | ca06f8896b62c58fe366bdecf2c237d8a195fd0f (patch) | |
| tree | b5e501c69e7276b2ec9319075ce9ec2417996565 /src/libstd | |
| parent | a0d05150c9f3297d558262e5637521d08f86d8de (diff) | |
| parent | 8eb7f36a3ba06dbea4a44254c3e2d92455ae150f (diff) | |
| download | rust-ca06f8896b62c58fe366bdecf2c237d8a195fd0f.tar.gz rust-ca06f8896b62c58fe366bdecf2c237d8a195fd0f.zip | |
Rollup merge of #61720 - alexcrichton:libstd-cfg-if-dep, r=sfackler
std: Remove internal definitions of `cfg_if!` macro This is duplicated in a few locations throughout the sysroot to work around issues with not exporting a macro in libstd but still wanting it available to sysroot crates to define blocks. Nowadays though we can simply depend on the `cfg-if` crate on crates.io, allowing us to use it from there!
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/Cargo.toml | 1 | ||||
| -rw-r--r-- | src/libstd/lib.rs | 6 | ||||
| -rw-r--r-- | src/libstd/macros.rs | 36 | ||||
| -rw-r--r-- | src/libstd/os/mod.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys/mod.rs | 6 | ||||
| -rw-r--r-- | src/libstd/sys/wasm/mod.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys/wasm/thread.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys_common/mod.rs | 2 |
8 files changed, 14 insertions, 43 deletions
diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml index 30e23f1007f..a170dae2b08 100644 --- a/src/libstd/Cargo.toml +++ b/src/libstd/Cargo.toml @@ -15,6 +15,7 @@ crate-type = ["dylib", "rlib"] [dependencies] alloc = { path = "../liballoc" } +cfg-if = "0.1.8" panic_unwind = { path = "../libpanic_unwind", optional = true } panic_abort = { path = "../libpanic_abort" } core = { path = "../libcore" } diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index a3356e6be2c..e0ffc9ba92f 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -336,6 +336,12 @@ extern crate libc; #[allow(unused_extern_crates)] extern crate unwind; +// Only needed for now for the `std_detect` module until that crate changes to +// use `cfg_if::cfg_if!` +#[macro_use] +#[cfg(not(test))] +extern crate cfg_if; + // During testing, this crate is not actually the "real" std library, but rather // it links to the real std library, which was compiled from this same source // code. So any lang items std defines are conditionally excluded (or else they diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index ef1b549d1dc..d695141bef0 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -896,39 +896,3 @@ mod builtin { ($cond:expr, $($arg:tt)+) => ({ /* compiler built-in */ }); } } - -/// Defines `#[cfg]` if-else statements. -/// -/// This is similar to the `if/elif` C preprocessor macro by allowing definition -/// of a cascade of `#[cfg]` cases, emitting the implementation which matches -/// first. -/// -/// This allows you to conveniently provide a long list `#[cfg]`'d blocks of code -/// without having to rewrite each clause multiple times. -macro_rules! cfg_if { - ($( - if #[cfg($($meta:meta),*)] { $($it:item)* } - ) else * else { - $($it2:item)* - }) => { - __cfg_if_items! { - () ; - $( ( ($($meta),*) ($($it)*) ), )* - ( () ($($it2)*) ), - } - } -} - -macro_rules! __cfg_if_items { - (($($not:meta,)*) ; ) => {}; - (($($not:meta,)*) ; ( ($($m:meta),*) ($($it:item)*) ), $($rest:tt)*) => { - __cfg_if_apply! { cfg(all(not(any($($not),*)), $($m,)*)), $($it)* } - __cfg_if_items! { ($($not,)* $($m,)*) ; $($rest)* } - } -} - -macro_rules! __cfg_if_apply { - ($m:meta, $($it:item)*) => { - $(#[$m] $it)* - } -} diff --git a/src/libstd/os/mod.rs b/src/libstd/os/mod.rs index 44cbc180b8b..94e8b7805cf 100644 --- a/src/libstd/os/mod.rs +++ b/src/libstd/os/mod.rs @@ -3,7 +3,7 @@ #![stable(feature = "os", since = "1.0.0")] #![allow(missing_docs, nonstandard_style, missing_debug_implementations)] -cfg_if! { +cfg_if::cfg_if! { if #[cfg(rustdoc)] { // When documenting libstd we want to show unix/windows/linux modules as diff --git a/src/libstd/sys/mod.rs b/src/libstd/sys/mod.rs index 3f3cedc53b7..21360e2e0f0 100644 --- a/src/libstd/sys/mod.rs +++ b/src/libstd/sys/mod.rs @@ -22,7 +22,7 @@ #![allow(missing_debug_implementations)] -cfg_if! { +cfg_if::cfg_if! { if #[cfg(unix)] { mod unix; pub use self::unix::*; @@ -54,7 +54,7 @@ cfg_if! { // Windows when we're compiling for Linux. #[cfg(rustdoc)] -cfg_if! { +cfg_if::cfg_if! { if #[cfg(any(unix, target_os = "redox"))] { // On unix we'll document what's already available #[stable(feature = "rust1", since = "1.0.0")] @@ -77,7 +77,7 @@ cfg_if! { } #[cfg(rustdoc)] -cfg_if! { +cfg_if::cfg_if! { if #[cfg(windows)] { // On windows we'll just be documenting what's already available #[allow(missing_docs)] diff --git a/src/libstd/sys/wasm/mod.rs b/src/libstd/sys/wasm/mod.rs index 9ea8bd16538..7d157709eb6 100644 --- a/src/libstd/sys/wasm/mod.rs +++ b/src/libstd/sys/wasm/mod.rs @@ -40,7 +40,7 @@ pub mod stdio; pub use crate::sys_common::os_str_bytes as os_str; -cfg_if! { +cfg_if::cfg_if! { if #[cfg(target_feature = "atomics")] { #[path = "condvar_atomics.rs"] pub mod condvar; diff --git a/src/libstd/sys/wasm/thread.rs b/src/libstd/sys/wasm/thread.rs index 1dc786cd5d7..61b4003cd3d 100644 --- a/src/libstd/sys/wasm/thread.rs +++ b/src/libstd/sys/wasm/thread.rs @@ -59,7 +59,7 @@ pub mod guard { pub unsafe fn init() -> Option<Guard> { None } } -cfg_if! { +cfg_if::cfg_if! { if #[cfg(all(target_feature = "atomics", feature = "wasm-bindgen-threads"))] { #[link(wasm_import_module = "__wbindgen_thread_xform__")] extern { diff --git a/src/libstd/sys_common/mod.rs b/src/libstd/sys_common/mod.rs index c4daedefd8e..13a59f66c5c 100644 --- a/src/libstd/sys_common/mod.rs +++ b/src/libstd/sys_common/mod.rs @@ -65,7 +65,7 @@ pub mod bytestring; pub mod process; pub mod fs; -cfg_if! { +cfg_if::cfg_if! { if #[cfg(any(target_os = "cloudabi", target_os = "l4re", target_os = "redox", |
