diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-05-05 16:42:18 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-05-05 17:47:18 +0200 |
| commit | be71d8b24f1aebe9c45279d95a76db8fa6a62574 (patch) | |
| tree | 57506bf9e7480702442acbf31ee55cd060c2929b /tests/rustdoc/doc-cfg/doc-cfg.rs | |
| parent | d1f4a0bcb60ab868c496ca72a28b48ac0a4128af (diff) | |
| download | rust-be71d8b24f1aebe9c45279d95a76db8fa6a62574.tar.gz rust-be71d8b24f1aebe9c45279d95a76db8fa6a62574.zip | |
Created `tests/rustdoc/doc-cfg` subfolder to limit number of files at the top level
Diffstat (limited to 'tests/rustdoc/doc-cfg/doc-cfg.rs')
| -rw-r--r-- | tests/rustdoc/doc-cfg/doc-cfg.rs | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tests/rustdoc/doc-cfg/doc-cfg.rs b/tests/rustdoc/doc-cfg/doc-cfg.rs new file mode 100644 index 00000000000..652c8419b4f --- /dev/null +++ b/tests/rustdoc/doc-cfg/doc-cfg.rs @@ -0,0 +1,101 @@ +#![feature(doc_cfg)] +#![feature(target_feature, cfg_target_feature)] + +//@ has doc_cfg/struct.Portable.html +//@ !has - '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' '' +//@ has - '//*[@id="method.unix_and_arm_only_function"]' 'fn unix_and_arm_only_function()' +//@ has - '//*[@class="stab portability"]' 'Available on Unix and ARM only.' +//@ has - '//*[@id="method.wasi_and_wasm32_only_function"]' 'fn wasi_and_wasm32_only_function()' +//@ has - '//*[@class="stab portability"]' 'Available on WASI and WebAssembly only.' +pub struct Portable; + +//@ has doc_cfg/unix_only/index.html \ +// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ +// 'Available on Unix only.' +//@ matches - '//dt//*[@class="stab portability"]' '\AARM\Z' +//@ count - '//*[@class="stab portability"]' 2 +#[doc(cfg(unix))] +pub mod unix_only { + //@ has doc_cfg/unix_only/fn.unix_only_function.html \ + // '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ + // 'Available on Unix only.' + //@ count - '//*[@class="stab portability"]' 1 + pub fn unix_only_function() { + content::should::be::irrelevant(); + } + + //@ has doc_cfg/unix_only/trait.ArmOnly.html \ + // '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ + // 'Available on Unix and ARM only.' + //@ count - '//*[@class="stab portability"]' 1 + #[doc(cfg(target_arch = "arm"))] + pub trait ArmOnly { + fn unix_and_arm_only_function(); + } + + #[doc(cfg(target_arch = "arm"))] + impl ArmOnly for super::Portable { + fn unix_and_arm_only_function() {} + } +} + +//@ has doc_cfg/wasi_only/index.html \ +// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ +// 'Available on WASI only.' +//@ matches - '//dt//*[@class="stab portability"]' '\AWebAssembly\Z' +//@ count - '//*[@class="stab portability"]' 2 +#[doc(cfg(target_os = "wasi"))] +pub mod wasi_only { + //@ has doc_cfg/wasi_only/fn.wasi_only_function.html \ + // '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ + // 'Available on WASI only.' + //@ count - '//*[@class="stab portability"]' 1 + pub fn wasi_only_function() { + content::should::be::irrelevant(); + } + + //@ has doc_cfg/wasi_only/trait.Wasm32Only.html \ + // '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ + // 'Available on WASI and WebAssembly only.' + //@ count - '//*[@class="stab portability"]' 1 + #[doc(cfg(target_arch = "wasm32"))] + pub trait Wasm32Only { + fn wasi_and_wasm32_only_function(); + } + + #[doc(cfg(target_arch = "wasm32"))] + impl Wasm32Only for super::Portable { + fn wasi_and_wasm32_only_function() {} + } +} + +// tagging a function with `#[target_feature]` creates a doc(cfg(target_feature)) node for that +// item as well + +// the portability header is different on the module view versus the full view +//@ has doc_cfg/index.html +//@ matches - '//dt//*[@class="stab portability"]' '\Aavx\Z' + +//@ has doc_cfg/fn.uses_target_feature.html +//@ has - '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ +// 'Available with target feature avx only.' +#[target_feature(enable = "avx")] +pub unsafe fn uses_target_feature() { + content::should::be::irrelevant(); +} + +//@ has doc_cfg/fn.uses_cfg_target_feature.html +//@ has - '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ +// 'Available with target feature avx only.' +#[doc(cfg(target_feature = "avx"))] +pub fn uses_cfg_target_feature() { + uses_target_feature(); +} + +// multiple attributes should be allowed +//@ has doc_cfg/fn.multiple_attrs.html \ +// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \ +// 'Available on x and y and z only.' +#[doc(cfg(x))] +#[doc(cfg(y), cfg(z))] +pub fn multiple_attrs() {} |
