blob: 3f0e2ffca213629904a02417f02a85b4fd465999 [file] [edit]
// This test ensures that using `auto_cfg(show(key))` works correctly.
#![feature(doc_cfg)]
#![crate_name = "foo"]
#![doc(auto_cfg(hide(meow)))]
#![doc(auto_cfg(hide(meow, values("lol"))))]
//@ has foo/fn.foo.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow'
#[cfg(not(meow))]
#[cfg(not(blob))]
pub fn foo() {}
//@ has foo/fn.bar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lol'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lol'
#[cfg(not(meow = "lol"))]
#[cfg(not(blob = "lol"))]
pub fn bar() {}
//@ has foo/fn.babar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lola'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lola'
#[cfg(not(meow = "lola"))]
#[cfg(not(blob = "lola"))]
pub fn babar() {}
pub mod sub {
// We show again `meow`, however `meow="lol"` should still be hidden.
#![doc(auto_cfg(show(meow)))]
//@ has foo/sub/fn.foo.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow'
#[cfg(not(meow))]
#[cfg(not(blob))]
pub fn foo() {}
//@ has foo/sub/fn.bar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lol'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lol'
#[cfg(not(meow = "lol"))]
#[cfg(not(blob = "lol"))]
pub fn bar() {}
//@ has foo/sub/fn.babar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lola'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lola'
#[cfg(not(meow = "lola"))]
#[cfg(not(blob = "lola"))]
pub fn babar() {}
}
pub mod sub2 {
// We show again `meow = "lol`, however `meow` should still be hidden.
#![doc(auto_cfg(show(meow, values("lol"))))]
//@ has foo/sub2/fn.foo.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow'
#[cfg(not(meow))]
#[cfg(not(blob))]
pub fn foo() {}
//@ has foo/sub2/fn.bar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lol'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lol'
#[cfg(not(meow = "lol"))]
#[cfg(not(blob = "lol"))]
pub fn bar() {}
//@ has foo/sub2/fn.babar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lola'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lola'
#[cfg(not(meow = "lola"))]
#[cfg(not(blob = "lola"))]
pub fn babar() {}
}
pub mod sub3 {
// We show again `meow = "lol`, but by using `any()` this time.
#![doc(auto_cfg(show(meow, values(any()))))]
//@ has foo/sub3/fn.foo.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow'
#[cfg(not(meow))]
#[cfg(not(blob))]
pub fn foo() {}
//@ has foo/sub3/fn.bar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lol'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lol'
#[cfg(not(meow = "lol"))]
#[cfg(not(blob = "lol"))]
pub fn bar() {}
//@ has foo/sub3/fn.babar.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-blob=lola'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-meow=lola'
#[cfg(not(meow = "lola"))]
#[cfg(not(blob = "lola"))]
pub fn babar() {}
}
// This test the mix of values and `none()`.
#[doc(auto_cfg(
hide(bla, values(none(), "tic")),
hide(alb, values(none())),
))]
pub mod sub4 {
//@ has foo/sub4/fn.foo.html
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=tic'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-alb'
#[cfg(not(bla))]
#[cfg(not(bla = "tic"))]
#[cfg(not(alb))]
pub fn foo() {}
//@ has foo/sub4/fn.foo2.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=tic'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-alb'
#[doc(auto_cfg(
show(bla, values(none(), "tic")),
show(alb, values(none())),
))]
#[cfg(not(bla))]
#[cfg(not(bla = "tic"))]
#[cfg(not(alb))]
pub fn foo2() {}
}
// This test the mix of `any()` and values.
#[doc(auto_cfg(
hide(alb, values(any())),
hide(bla, values(any())),
show(bla, values("top")),
))]
pub mod sub5 {
//@ has foo/sub5/fn.foo.html
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-alb'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=top'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=a'
#[cfg(not(alb))]
#[cfg(not(bla = "top"))]
#[cfg(not(bla = "a"))]
pub fn foo() {}
//@ has foo/sub5/fn.foo2.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-alb'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=top'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=a'
#[doc(auto_cfg(
show(alb, values(none())),
hide(bla, values("top")),
))]
#[cfg(not(alb))]
#[cfg(not(bla = "top"))]
#[cfg(not(bla = "a"))]
pub fn foo2() {}
//@ has foo/sub5/fn.foo3.html
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-alb'
//@ !has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=top'
//@ has - '//*[@class="item-info"]/*[@class="stab portability"]' 'non-bla=a'
#[doc(auto_cfg(
show(alb, values(any())),
show(bla, values(any())),
hide(bla, values(none(), "top")),
))]
#[cfg(not(alb))]
#[cfg(not(bla = "top"))]
#[cfg(not(bla = "a"))]
pub fn foo3() {}
}