Skip to content

Commit e846f9c

Browse files
committed
Auto merge of #88619 - GuillaumeGomez:simplify-std-os-reexports, r=Amanieu
Remove `cfg(doc)` from std::os module reexports to fix rustdoc linking issues Fixes #88304. I tested it based on #88292. Not sure if it's the best approach, but at least it makes thing a bit simpler. cc `@jyn514`
2 parents cdeba02 + 9a3b1cf commit e846f9c

File tree

2 files changed

+115
-96
lines changed

2 files changed

+115
-96
lines changed

Diff for: library/std/src/os/mod.rs

+114-95
Original file line numberDiff line numberDiff line change
@@ -10,117 +10,136 @@ pub mod raw;
1010
// of a macro that is not vendored by Rust and included in the toolchain.
1111
// See https://github.com/rust-analyzer/rust-analyzer/issues/6038.
1212

13+
// On certain platforms right now the "main modules" modules that are
14+
// documented don't compile (missing things in `libc` which is empty),
15+
// so just omit them with an empty module and add the "unstable" attribute.
16+
17+
// Unix, linux, wasi and windows are handled a bit differently.
1318
#[cfg(all(
1419
doc,
15-
not(any(
20+
any(
1621
all(target_arch = "wasm32", not(target_os = "wasi")),
1722
all(target_vendor = "fortanix", target_env = "sgx")
18-
))
23+
)
1924
))]
20-
#[path = "."]
21-
mod doc {
22-
// When documenting std we want to show the `unix`, `windows`, `linux` and `wasi`
23-
// modules as these are the "main modules" that are used across platforms,
24-
// so these modules are enabled when `cfg(doc)` is set.
25-
// This should help show platform-specific functionality in a hopefully cross-platform
26-
// way in the documentation.
27-
28-
pub mod unix;
29-
30-
pub mod linux;
31-
32-
pub mod wasi;
33-
34-
pub mod windows;
35-
}
25+
#[unstable(issue = "none", feature = "std_internals")]
26+
pub mod unix {}
3627
#[cfg(all(
3728
doc,
3829
any(
3930
all(target_arch = "wasm32", not(target_os = "wasi")),
4031
all(target_vendor = "fortanix", target_env = "sgx")
4132
)
4233
))]
43-
mod doc {
44-
// On certain platforms right now the "main modules" modules that are
45-
// documented don't compile (missing things in `libc` which is empty),
46-
// so just omit them with an empty module.
47-
48-
#[unstable(issue = "none", feature = "std_internals")]
49-
pub mod unix {}
50-
51-
#[unstable(issue = "none", feature = "std_internals")]
52-
pub mod linux {}
53-
54-
#[unstable(issue = "none", feature = "std_internals")]
55-
pub mod wasi {}
56-
57-
#[unstable(issue = "none", feature = "std_internals")]
58-
pub mod windows {}
59-
}
60-
#[cfg(doc)]
61-
#[stable(feature = "os", since = "1.0.0")]
62-
pub use doc::*;
63-
64-
#[cfg(not(doc))]
65-
#[path = "."]
66-
mod imp {
67-
// If we're not documenting std then we only expose modules appropriate for the
68-
// current platform.
69-
70-
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
71-
pub mod fortanix_sgx;
72-
73-
#[cfg(target_os = "hermit")]
74-
#[path = "hermit/mod.rs"]
75-
pub mod unix;
34+
#[unstable(issue = "none", feature = "std_internals")]
35+
pub mod linux {}
36+
#[cfg(all(
37+
doc,
38+
any(
39+
all(target_arch = "wasm32", not(target_os = "wasi")),
40+
all(target_vendor = "fortanix", target_env = "sgx")
41+
)
42+
))]
43+
#[unstable(issue = "none", feature = "std_internals")]
44+
pub mod wasi {}
45+
#[cfg(all(
46+
doc,
47+
any(
48+
all(target_arch = "wasm32", not(target_os = "wasi")),
49+
all(target_vendor = "fortanix", target_env = "sgx")
50+
)
51+
))]
52+
#[unstable(issue = "none", feature = "std_internals")]
53+
pub mod windows {}
7654

77-
#[cfg(target_os = "android")]
78-
pub mod android;
79-
#[cfg(target_os = "dragonfly")]
80-
pub mod dragonfly;
81-
#[cfg(target_os = "emscripten")]
82-
pub mod emscripten;
83-
#[cfg(target_os = "espidf")]
84-
pub mod espidf;
85-
#[cfg(target_os = "freebsd")]
86-
pub mod freebsd;
87-
#[cfg(target_os = "fuchsia")]
88-
pub mod fuchsia;
89-
#[cfg(target_os = "haiku")]
90-
pub mod haiku;
91-
#[cfg(target_os = "illumos")]
92-
pub mod illumos;
93-
#[cfg(target_os = "ios")]
94-
pub mod ios;
95-
#[cfg(target_os = "l4re")]
96-
pub mod linux;
97-
#[cfg(target_os = "linux")]
98-
pub mod linux;
99-
#[cfg(target_os = "macos")]
100-
pub mod macos;
101-
#[cfg(target_os = "netbsd")]
102-
pub mod netbsd;
103-
#[cfg(target_os = "openbsd")]
104-
pub mod openbsd;
105-
#[cfg(target_os = "redox")]
106-
pub mod redox;
107-
#[cfg(target_os = "solaris")]
108-
pub mod solaris;
109-
#[cfg(unix)]
110-
pub mod unix;
55+
// unix
56+
#[cfg(not(all(
57+
doc,
58+
any(
59+
all(target_arch = "wasm32", not(target_os = "wasi")),
60+
all(target_vendor = "fortanix", target_env = "sgx")
61+
)
62+
)))]
63+
#[cfg(target_os = "hermit")]
64+
#[path = "hermit/mod.rs"]
65+
pub mod unix;
66+
#[cfg(not(all(
67+
doc,
68+
any(
69+
all(target_arch = "wasm32", not(target_os = "wasi")),
70+
all(target_vendor = "fortanix", target_env = "sgx")
71+
)
72+
)))]
73+
#[cfg(all(not(target_os = "hermit"), any(unix, doc)))]
74+
pub mod unix;
11175

112-
#[cfg(target_os = "vxworks")]
113-
pub mod vxworks;
76+
// linux
77+
#[cfg(not(all(
78+
doc,
79+
any(
80+
all(target_arch = "wasm32", not(target_os = "wasi")),
81+
all(target_vendor = "fortanix", target_env = "sgx")
82+
)
83+
)))]
84+
#[cfg(any(target_os = "linux", target_os = "l4re", doc))]
85+
pub mod linux;
11486

115-
#[cfg(target_os = "wasi")]
116-
pub mod wasi;
87+
// wasi
88+
#[cfg(not(all(
89+
doc,
90+
any(
91+
all(target_arch = "wasm32", not(target_os = "wasi")),
92+
all(target_vendor = "fortanix", target_env = "sgx")
93+
)
94+
)))]
95+
#[cfg(any(target_os = "wasi", doc))]
96+
pub mod wasi;
11797

118-
#[cfg(windows)]
119-
pub mod windows;
120-
}
121-
#[cfg(not(doc))]
122-
#[stable(feature = "os", since = "1.0.0")]
123-
pub use imp::*;
98+
// windows
99+
#[cfg(not(all(
100+
doc,
101+
any(
102+
all(target_arch = "wasm32", not(target_os = "wasi")),
103+
all(target_vendor = "fortanix", target_env = "sgx")
104+
)
105+
)))]
106+
#[cfg(any(windows, doc))]
107+
pub mod windows;
108+
109+
// Others.
110+
#[cfg(target_os = "android")]
111+
pub mod android;
112+
#[cfg(target_os = "dragonfly")]
113+
pub mod dragonfly;
114+
#[cfg(target_os = "emscripten")]
115+
pub mod emscripten;
116+
#[cfg(target_os = "espidf")]
117+
pub mod espidf;
118+
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
119+
pub mod fortanix_sgx;
120+
#[cfg(target_os = "freebsd")]
121+
pub mod freebsd;
122+
#[cfg(target_os = "fuchsia")]
123+
pub mod fuchsia;
124+
#[cfg(target_os = "haiku")]
125+
pub mod haiku;
126+
#[cfg(target_os = "illumos")]
127+
pub mod illumos;
128+
#[cfg(target_os = "ios")]
129+
pub mod ios;
130+
#[cfg(target_os = "macos")]
131+
pub mod macos;
132+
#[cfg(target_os = "netbsd")]
133+
pub mod netbsd;
134+
#[cfg(target_os = "openbsd")]
135+
pub mod openbsd;
136+
#[cfg(target_os = "redox")]
137+
pub mod redox;
138+
#[cfg(target_os = "solaris")]
139+
pub mod solaris;
140+
141+
#[cfg(target_os = "vxworks")]
142+
pub mod vxworks;
124143

125144
#[cfg(any(unix, target_os = "wasi", doc))]
126145
mod fd;

Diff for: src/tools/clippy/clippy_utils/src/paths.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub const PARKING_LOT_RWLOCK_WRITE_GUARD: [&str; 2] = ["parking_lot", "RwLockWri
104104
pub const PATH_BUF_AS_PATH: [&str; 4] = ["std", "path", "PathBuf", "as_path"];
105105
pub const PATH_TO_PATH_BUF: [&str; 4] = ["std", "path", "Path", "to_path_buf"];
106106
pub const PERMISSIONS: [&str; 3] = ["std", "fs", "Permissions"];
107-
pub const PERMISSIONS_FROM_MODE: [&str; 7] = ["std", "os", "imp", "unix", "fs", "PermissionsExt", "from_mode"];
107+
pub const PERMISSIONS_FROM_MODE: [&str; 6] = ["std", "os", "unix", "fs", "PermissionsExt", "from_mode"];
108108
pub const POLL: [&str; 4] = ["core", "task", "poll", "Poll"];
109109
pub const POLL_PENDING: [&str; 5] = ["core", "task", "poll", "Poll", "Pending"];
110110
pub const POLL_READY: [&str; 5] = ["core", "task", "poll", "Poll", "Ready"];

0 commit comments

Comments
 (0)