// Test covering RFC 3631 features. #![crate_name = "foo"] #![feature(doc_cfg)] #![doc(auto_cfg(hide(feature = "hidden")))] //@ has 'foo/index.html' //@ !has - '//*[@class="stab portability"]' 'Non-moustache' //@ has - '//*[@class="stab portability"]' 'Non-pistache' //@ count - '//*[@class="stab portability"]' 1 //@ has 'foo/m/index.html' //@ count - '//*[@title="Available on non-crate feature `hidden` only"]' 2 #[cfg(not(feature = "hidden"))] pub mod m { //@ count 'foo/m/struct.A.html' '//*[@class="stab portability"]' 0 pub struct A; //@ has 'foo/m/inner/index.html' '//*[@class="stab portability"]' 'Available on non-crate feature hidden only.' #[doc(auto_cfg(show(feature = "hidden")))] pub mod inner { //@ has 'foo/m/inner/struct.B.html' '//*[@class="stab portability"]' 'Available on non-crate feature hidden only.' pub struct B; //@ count 'foo/m/inner/struct.A.html' '//*[@class="stab portability"]' 0 #[doc(auto_cfg(hide(feature = "hidden")))] pub struct A; } //@ has 'foo/m/struct.B.html' '//*[@class="stab portability"]' 'Available on non-crate feature hidden only.' #[doc(auto_cfg(show(feature = "hidden")))] pub struct B; } //@ count 'foo/n/index.html' '//*[@title="Available on non-crate feature `moustache` only"]' 3 //@ count - '//dl/dt' 4 #[cfg(not(feature = "moustache"))] #[doc(auto_cfg = false)] pub mod n { // Should not have `moustache` listed. //@ count 'foo/n/struct.X.html' '//*[@class="stab portability"]' 0 pub struct X; // Should re-enable `auto_cfg` and make `moustache` listed. //@ has 'foo/n/struct.Y.html' '//*[@class="stab portability"]' \ // 'Available on non-crate feature moustache only.' #[doc(auto_cfg)] pub struct Y; // Should re-enable `auto_cfg` and make `moustache` listed for itself // and for `Y`. //@ has 'foo/n/inner/index.html' '//*[@class="stab portability"]' \ // 'Available on non-crate feature moustache only.' #[doc(auto_cfg = true)] pub mod inner { //@ has 'foo/n/inner/struct.Y.html' '//*[@class="stab portability"]' \ // 'Available on non-crate feature moustache only.' pub struct Y; } // Should re-enable `auto_cfg` and make `moustache` listed. //@ has 'foo/n/struct.Z.html' '//*[@class="stab portability"]' \ // 'Available on non-crate feature moustache only.' #[doc(auto_cfg(hide(feature = "hidden")))] pub struct Z; } // Checking inheritance. //@ has 'foo/o/index.html' '//*[@class="stab portability"]' \ // 'Available on non-crate feature pistache only.' #[doc(cfg(not(feature = "pistache")))] pub mod o { //@ has 'foo/o/struct.A.html' '//*[@class="stab portability"]' \ // 'Available on non-crate feature pistache and non-crate feature tarte only.' #[doc(cfg(not(feature = "tarte")))] pub struct A; }