2017-08-05 01:38:52 -05:00
|
|
|
#![feature(doc_cfg)]
|
2018-03-21 19:57:10 -05:00
|
|
|
#![feature(target_feature, cfg_target_feature)]
|
2017-08-05 01:38:52 -05:00
|
|
|
|
|
|
|
// @has doc_cfg/struct.Portable.html
|
2021-11-29 10:14:05 -06:00
|
|
|
// @!has - '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' ''
|
2017-08-05 01:38:52 -05:00
|
|
|
// @has - '//*[@id="method.unix_and_arm_only_function"]' 'fn unix_and_arm_only_function()'
|
2022-04-14 18:03:56 -05:00
|
|
|
// @has - '//*[@class="stab portability"]' 'Available on Unix and ARM only.'
|
2021-02-28 16:07:05 -06:00
|
|
|
// @has - '//*[@id="method.wasi_and_wasm32_only_function"]' 'fn wasi_and_wasm32_only_function()'
|
2022-04-14 18:03:56 -05:00
|
|
|
// @has - '//*[@class="stab portability"]' 'Available on WASI and WebAssembly only.'
|
2017-08-05 01:38:52 -05:00
|
|
|
pub struct Portable;
|
|
|
|
|
|
|
|
// @has doc_cfg/unix_only/index.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on Unix only.'
|
2023-02-07 20:00:18 -06:00
|
|
|
// @matches - '//*[@class="item-name"]//*[@class="stab portability"]' '\AARM\Z'
|
2020-10-06 13:48:01 -05:00
|
|
|
// @count - '//*[@class="stab portability"]' 2
|
2017-08-05 01:38:52 -05:00
|
|
|
#[doc(cfg(unix))]
|
|
|
|
pub mod unix_only {
|
|
|
|
// @has doc_cfg/unix_only/fn.unix_only_function.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on Unix only.'
|
2017-08-05 01:38:52 -05:00
|
|
|
// @count - '//*[@class="stab portability"]' 1
|
|
|
|
pub fn unix_only_function() {
|
|
|
|
content::should::be::irrelevant();
|
|
|
|
}
|
|
|
|
|
|
|
|
// @has doc_cfg/unix_only/trait.ArmOnly.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on Unix and ARM only.'
|
2020-11-23 06:22:56 -06:00
|
|
|
// @count - '//*[@class="stab portability"]' 1
|
2017-08-05 01:38:52 -05:00
|
|
|
#[doc(cfg(target_arch = "arm"))]
|
|
|
|
pub trait ArmOnly {
|
|
|
|
fn unix_and_arm_only_function();
|
|
|
|
}
|
|
|
|
|
2020-11-23 06:22:56 -06:00
|
|
|
#[doc(cfg(target_arch = "arm"))]
|
2017-08-05 01:38:52 -05:00
|
|
|
impl ArmOnly for super::Portable {
|
|
|
|
fn unix_and_arm_only_function() {}
|
|
|
|
}
|
2017-12-29 12:25:40 -06:00
|
|
|
}
|
2018-03-21 19:57:10 -05:00
|
|
|
|
2021-02-28 16:07:05 -06:00
|
|
|
// @has doc_cfg/wasi_only/index.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on WASI only.'
|
2023-02-07 20:00:18 -06:00
|
|
|
// @matches - '//*[@class="item-name"]//*[@class="stab portability"]' '\AWebAssembly\Z'
|
2021-02-28 16:07:05 -06:00
|
|
|
// @count - '//*[@class="stab portability"]' 2
|
|
|
|
#[doc(cfg(target_os = "wasi"))]
|
|
|
|
pub mod wasi_only {
|
|
|
|
// @has doc_cfg/wasi_only/fn.wasi_only_function.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on WASI only.'
|
2021-02-28 16:07:05 -06:00
|
|
|
// @count - '//*[@class="stab portability"]' 1
|
|
|
|
pub fn wasi_only_function() {
|
|
|
|
content::should::be::irrelevant();
|
|
|
|
}
|
|
|
|
|
|
|
|
// @has doc_cfg/wasi_only/trait.Wasm32Only.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on WASI and WebAssembly only.'
|
2021-02-28 16:07:05 -06:00
|
|
|
// @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() {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-21 19:57:10 -05:00
|
|
|
// 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
|
2023-02-07 20:00:18 -06:00
|
|
|
// @matches - '//*[@class="item-name"]//*[@class="stab portability"]' '\Aavx\Z'
|
2018-03-21 19:57:10 -05:00
|
|
|
|
|
|
|
// @has doc_cfg/fn.uses_target_feature.html
|
2021-11-29 10:14:05 -06:00
|
|
|
// @has - '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available with target feature avx only.'
|
2018-03-21 19:57:10 -05:00
|
|
|
#[target_feature(enable = "avx")]
|
|
|
|
pub unsafe fn uses_target_feature() {
|
|
|
|
content::should::be::irrelevant();
|
|
|
|
}
|
|
|
|
|
|
|
|
// @has doc_cfg/fn.uses_cfg_target_feature.html
|
2021-11-29 10:14:05 -06:00
|
|
|
// @has - '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available with target feature avx only.'
|
2018-03-21 19:57:10 -05:00
|
|
|
#[doc(cfg(target_feature = "avx"))]
|
|
|
|
pub fn uses_cfg_target_feature() {
|
|
|
|
uses_target_feature();
|
|
|
|
}
|
2021-04-22 12:28:43 -05:00
|
|
|
|
|
|
|
// multiple attributes should be allowed
|
|
|
|
// @has doc_cfg/fn.multiple_attrs.html \
|
2021-11-29 10:14:05 -06:00
|
|
|
// '//*[@id="main-content"]/*[@class="item-info"]/*[@class="stab portability"]' \
|
2022-04-14 18:03:56 -05:00
|
|
|
// 'Available on x and y and z only.'
|
2021-11-26 17:03:16 -06:00
|
|
|
#[doc(cfg(x))]
|
2021-04-22 12:28:43 -05:00
|
|
|
#[doc(cfg(y), cfg(z))]
|
|
|
|
pub fn multiple_attrs() {}
|