about summary refs log tree commit diff
path: root/src/libstd/os
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-08-13 03:00:20 +0000
committerbors <bors@rust-lang.org>2017-08-13 03:00:20 +0000
commit0ed03e5490b481804db27627e16e147680ed207d (patch)
tree44a0874cff604868f309f50a2de1e9e13876d816 /src/libstd/os
parent14fb329e0a691f04308d0a006d8e744595e8c8dc (diff)
parent3093bb85f94e6f3c4707674c8b70c28ecfbf3bf9 (diff)
downloadrust-0ed03e5490b481804db27627e16e147680ed207d.tar.gz
rust-0ed03e5490b481804db27627e16e147680ed207d.zip
Auto merge of #43348 - kennytm:fix-24658-doc-every-platform, r=alexcrichton
Expose all OS-specific modules in libstd doc.

1. Uses the special `--cfg dox` configuration passed by rustbuild when running `rustdoc`. Changes the `#[cfg(platform)]` into `#[cfg(any(dox, platform))]` so that platform-specific API are visible to rustdoc.

2. Since platform-specific implementations often won't compile correctly on other platforms, `rustdoc` is changed to apply `everybody_loops` to the functions during documentation and doc-test harness.

3. Since platform-specific code are documented on all platforms now, it could confuse users who found a useful API but is non-portable. Also, their examples will be doc-tested, so must be excluded when not testing on the native platform. An undocumented attribute `#[doc(cfg(...))]` is introduced to serve the above purposed.

Fixes #24658 (Does _not_ fully implement #1998).
Diffstat (limited to 'src/libstd/os')
-rw-r--r--src/libstd/os/mod.rs42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/libstd/os/mod.rs b/src/libstd/os/mod.rs
index e45af867055..72eed549f62 100644
--- a/src/libstd/os/mod.rs
+++ b/src/libstd/os/mod.rs
@@ -13,26 +13,36 @@
 #![stable(feature = "os", since = "1.0.0")]
 #![allow(missing_docs, bad_style, missing_debug_implementations)]
 
-#[cfg(any(target_os = "redox", unix))]
+#[cfg(all(not(dox), any(target_os = "redox", unix)))]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use sys::ext as unix;
-#[cfg(windows)]
+#[cfg(all(not(dox), windows))]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use sys::ext as windows;
 
-#[cfg(target_os = "android")]   pub mod android;
-#[cfg(target_os = "bitrig")]    pub mod bitrig;
-#[cfg(target_os = "dragonfly")] pub mod dragonfly;
-#[cfg(target_os = "freebsd")]   pub mod freebsd;
-#[cfg(target_os = "haiku")]     pub mod haiku;
-#[cfg(target_os = "ios")]       pub mod ios;
-#[cfg(target_os = "linux")]     pub mod linux;
-#[cfg(target_os = "macos")]     pub mod macos;
-#[cfg(target_os = "nacl")]      pub mod nacl;
-#[cfg(target_os = "netbsd")]   pub mod netbsd;
-#[cfg(target_os = "openbsd")]   pub mod openbsd;
-#[cfg(target_os = "solaris")]   pub mod solaris;
-#[cfg(target_os = "emscripten")] pub mod emscripten;
-#[cfg(target_os = "fuchsia")]    pub mod fuchsia;
+#[cfg(dox)]
+#[stable(feature = "rust1", since = "1.0.0")]
+pub use sys::unix_ext as unix;
+#[cfg(dox)]
+#[stable(feature = "rust1", since = "1.0.0")]
+pub use sys::windows_ext as windows;
+
+#[cfg(any(dox, target_os = "linux"))]
+#[doc(cfg(target_os = "linux"))]
+pub mod linux;
+
+#[cfg(all(not(dox), target_os = "android"))]    pub mod android;
+#[cfg(all(not(dox), target_os = "bitrig"))]     pub mod bitrig;
+#[cfg(all(not(dox), target_os = "dragonfly"))]  pub mod dragonfly;
+#[cfg(all(not(dox), target_os = "freebsd"))]    pub mod freebsd;
+#[cfg(all(not(dox), target_os = "haiku"))]      pub mod haiku;
+#[cfg(all(not(dox), target_os = "ios"))]        pub mod ios;
+#[cfg(all(not(dox), target_os = "macos"))]      pub mod macos;
+#[cfg(all(not(dox), target_os = "nacl"))]       pub mod nacl;
+#[cfg(all(not(dox), target_os = "netbsd"))]     pub mod netbsd;
+#[cfg(all(not(dox), target_os = "openbsd"))]    pub mod openbsd;
+#[cfg(all(not(dox), target_os = "solaris"))]    pub mod solaris;
+#[cfg(all(not(dox), target_os = "emscripten"))] pub mod emscripten;
+#[cfg(all(not(dox), target_os = "fuchsia"))]    pub mod fuchsia;
 
 pub mod raw;