-
Notifications
You must be signed in to change notification settings - Fork 13k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #78678 - Nemo157:doc-cfg-w-traits, r=jyn514,Guillaume…
…Gomez Add tests and improve rendering of cfgs on traits Shows the additional features required to get the trait implementation, suppressing any already shown on the current page. One interesting effect from this is if you have a cfg-ed type, implementing a cfg-ed trait (so the implementation depends on both cfgs), you will get the inverted pair of cfgs shown on each page: ![image](https://user-images.githubusercontent.com/81079/97904671-207bdc00-1d41-11eb-8144-707e8017d2b6.png) ![image](https://user-images.githubusercontent.com/81079/97904700-27a2ea00-1d41-11eb-8b9f-e925ba339044.png) The hidden items on the trait implementation also now get the correct cfgs displayed on them. Tests are blocked on #78673. fixes #68100 cc #43781
- Loading branch information
Showing
3 changed files
with
174 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
#![crate_name = "myrmecophagous"] | ||
#![feature(doc_cfg, associated_type_defaults)] | ||
|
||
// @has 'myrmecophagous/index.html' | ||
// @count - '//*[@class="stab portability"]' 2 | ||
// @matches - '//*[@class="stab portability"]' '^jurisconsult$' | ||
// @matches - '//*[@class="stab portability"]' '^quarter$' | ||
|
||
pub trait Lea {} | ||
|
||
// @has 'myrmecophagous/trait.Vortoscope.html' | ||
// @count - '//*[@class="stab portability"]' 6 | ||
// @matches - '//*[@class="stab portability"]' 'crate feature zibib' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature poriform' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature ethopoeia' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature lea' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature unit' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature quarter' | ||
pub trait Vortoscope { | ||
type Batology = (); | ||
|
||
#[doc(cfg(feature = "zibib"))] | ||
type Zibib = (); | ||
|
||
const YAHRZEIT: () = (); | ||
|
||
#[doc(cfg(feature = "poriform"))] | ||
const PORIFORM: () = (); | ||
|
||
fn javanais() {} | ||
|
||
#[doc(cfg(feature = "ethopoeia"))] | ||
fn ethopoeia() {} | ||
} | ||
|
||
#[doc(cfg(feature = "lea"))] | ||
impl<T: Lea> Vortoscope for T {} | ||
|
||
#[doc(cfg(feature = "unit"))] | ||
impl Vortoscope for () {} | ||
|
||
// @has 'myrmecophagous/trait.Jurisconsult.html' | ||
// @count - '//*[@class="stab portability"]' 7 | ||
// @matches - '//*[@class="stab portability"]' 'crate feature jurisconsult' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature lithomancy' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature boodle' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature mistetch' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature lea' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature unit' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature quarter' | ||
#[doc(cfg(feature = "jurisconsult"))] | ||
pub trait Jurisconsult { | ||
type Urbanist = (); | ||
|
||
#[doc(cfg(feature = "lithomancy"))] | ||
type Lithomancy = (); | ||
|
||
const UNIFILAR: () = (); | ||
|
||
#[doc(cfg(feature = "boodle"))] | ||
const BOODLE: () = (); | ||
|
||
fn mersion() {} | ||
|
||
#[doc(cfg(feature = "mistetch"))] | ||
fn mistetch() {} | ||
} | ||
|
||
#[doc(cfg(feature = "lea"))] | ||
impl<T: Lea> Jurisconsult for T {} | ||
|
||
#[doc(cfg(feature = "unit"))] | ||
impl Jurisconsult for () {} | ||
|
||
// @has 'myrmecophagous/struct.Ultimogeniture.html' | ||
// @count - '//*[@class="stab portability"]' 8 | ||
// | ||
// @matches - '//*[@class="stab portability"]' 'crate feature zibib' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature poriform' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature ethopoeia' | ||
// | ||
// @matches - '//*[@class="stab portability"]' 'crate feature jurisconsult' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature lithomancy' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature boodle' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature mistetch' | ||
// | ||
// @matches - '//*[@class="stab portability"]' 'crate feature copy' | ||
#[derive(Clone)] | ||
pub struct Ultimogeniture; | ||
|
||
impl Vortoscope for Ultimogeniture {} | ||
|
||
#[doc(cfg(feature = "jurisconsult"))] | ||
impl Jurisconsult for Ultimogeniture {} | ||
|
||
#[doc(cfg(feature = "copy"))] | ||
impl Copy for Ultimogeniture {} | ||
|
||
// @has 'myrmecophagous/struct.Quarter.html' | ||
// @count - '//*[@class="stab portability"]' 9 | ||
// @matches - '//*[@class="stab portability"]' 'crate feature quarter' | ||
// | ||
// @matches - '//*[@class="stab portability"]' 'crate feature zibib' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature poriform' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature ethopoeia' | ||
// | ||
// @matches - '//*[@class="stab portability"]' 'crate feature jurisconsult' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature lithomancy' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature boodle' | ||
// @matches - '//*[@class="stab portability"]' 'crate feature mistetch' | ||
// | ||
// @matches - '//*[@class="stab portability"]' 'crate feature copy' | ||
#[doc(cfg(feature = "quarter"))] | ||
#[derive(Clone)] | ||
pub struct Quarter; | ||
|
||
#[doc(cfg(feature = "quarter"))] | ||
impl Vortoscope for Quarter {} | ||
|
||
#[doc(cfg(all(feature = "jurisconsult", feature = "quarter")))] | ||
impl Jurisconsult for Quarter {} | ||
|
||
#[doc(cfg(all(feature = "copy", feature = "quarter")))] | ||
impl Copy for Quarter {} |