diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2015-02-13 16:36:56 +0200 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2015-02-15 00:39:37 +0200 |
| commit | 6a67d8600026865a1f291b1ea84ac28d4e7515a5 (patch) | |
| tree | adcf60a894ea0eaad7202f693412572d3905d86d /src | |
| parent | ba2efe96aeada34c1e2dc267a1a35948bdda91f8 (diff) | |
| download | rust-6a67d8600026865a1f291b1ea84ac28d4e7515a5.tar.gz rust-6a67d8600026865a1f291b1ea84ac28d4e7515a5.zip | |
Count and show the deprecated attribute again
Since we don’t have Deprecated stability level anymore, the only other source of information is deprecated-since version, which conveniently to us, only exists if the symbol is deprecated. Fixes #21789
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 3 | ||||
| -rw-r--r-- | src/librustdoc/html/format.rs | 23 | ||||
| -rw-r--r-- | src/librustdoc/stability_summary.rs | 24 |
3 files changed, 37 insertions, 13 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 6c3d2d8fa19..7ef48378af1 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -2490,6 +2490,7 @@ pub struct Stability { pub level: attr::StabilityLevel, pub feature: String, pub since: String, + pub deprecated_since: String, pub reason: String } @@ -2500,6 +2501,8 @@ impl Clean<Stability> for attr::Stability { feature: self.feature.to_string(), since: self.since.as_ref().map_or("".to_string(), |interned| interned.to_string()), + deprecated_since: self.deprecated_since.as_ref().map_or("".to_string(), + |istr| istr.to_string()), reason: self.reason.as_ref().map_or("".to_string(), |interned| interned.to_string()), } diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index e916b63eb8d..ed7f051408c 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -711,7 +711,11 @@ impl<'a> fmt::Display for Stability<'a> { match *stab { Some(ref stability) => { write!(f, "<a class='stability {lvl}' title='{reason}'>{lvl}</a>", - lvl = stability.level, + lvl = if stability.deprecated_since.is_empty() { + format!("{}", stability.level) + } else { + "Deprecated".to_string() + }, reason = stability.reason) } None => Ok(()) @@ -725,7 +729,11 @@ impl<'a> fmt::Display for ConciseStability<'a> { match *stab { Some(ref stability) => { write!(f, "<a class='stability {lvl}' title='{lvl}{colon}{reason}'></a>", - lvl = stability.level, + lvl = if stability.deprecated_since.is_empty() { + format!("{}", stability.level) + } else { + "Deprecated".to_string() + }, colon = if stability.reason.len() > 0 { ": " } else { "" }, reason = stability.reason) } @@ -763,6 +771,9 @@ impl fmt::Display for ModuleSummary { try!(write!(f, "<span class='summary Unstable' \ style='width: {:.4}%; display: inline-block'> </span>", (100 * cnt.unstable) as f64/tot as f64)); + try!(write!(f, "<span class='summary Deprecated' \ + style='width: {:.4}%; display: inline-block'> </span>", + (100 * cnt.deprecated) as f64/tot as f64)); try!(write!(f, "<span class='summary Unmarked' \ style='width: {:.4}%; display: inline-block'> </span>", (100 * cnt.unmarked) as f64/tot as f64)); @@ -778,11 +789,12 @@ impl fmt::Display for ModuleSummary { let mut context = Vec::new(); let tot = self.counts.total(); - let (stable, unstable, unmarked) = if tot == 0 { - (0, 0, 0) + let (stable, unstable, deprecated, unmarked) = if tot == 0 { + (0, 0, 0, 0) } else { ((100 * self.counts.stable)/tot, (100 * self.counts.unstable)/tot, + (100 * self.counts.deprecated)/tot, (100 * self.counts.unmarked)/tot) }; @@ -794,11 +806,12 @@ its children (percentages total for {name}): <blockquote> <a class='stability Stable'></a> stable ({}%),<br/> <a class='stability Unstable'></a> unstable ({}%),<br/> +<a class='stability Deprecated'></a> deprecated ({}%),<br/> <a class='stability Unmarked'></a> unmarked ({}%) </blockquote> The counts do not include methods or trait implementations that are visible only through a re-exported type.", -stable, unstable, unmarked, +stable, unstable, deprecated, unmarked, name=self.name)); try!(write!(f, "<table>")); try!(fmt_inner(f, &mut context, self)); diff --git a/src/librustdoc/stability_summary.rs b/src/librustdoc/stability_summary.rs index f1d9aef7f7c..47918ba78a2 100644 --- a/src/librustdoc/stability_summary.rs +++ b/src/librustdoc/stability_summary.rs @@ -29,11 +29,12 @@ use html::render::cache; /// The counts for each stability level. #[derive(Copy)] pub struct Counts { - pub unstable: uint, - pub stable: uint, + pub deprecated: u64, + pub unstable: u64, + pub stable: u64, /// No stability level, inherited or otherwise. - pub unmarked: uint, + pub unmarked: u64, } impl Add for Counts { @@ -41,6 +42,7 @@ impl Add for Counts { fn add(self, other: Counts) -> Counts { Counts { + deprecated: self.deprecated + other.deprecated, unstable: self.unstable + other.unstable, stable: self.stable + other.stable, unmarked: self.unmarked + other.unmarked, @@ -51,14 +53,15 @@ impl Add for Counts { impl Counts { fn zero() -> Counts { Counts { + deprecated: 0, unstable: 0, stable: 0, unmarked: 0, } } - pub fn total(&self) -> uint { - self.unstable + self.stable + self.unmarked + pub fn total(&self) -> u64 { + self.deprecated + self.unstable + self.stable + self.unmarked } } @@ -94,9 +97,14 @@ fn visible(item: &Item) -> bool { fn count_stability(stab: Option<&Stability>) -> Counts { match stab { None => Counts { unmarked: 1, .. Counts::zero() }, - Some(ref stab) => match stab.level { - Unstable => Counts { unstable: 1, .. Counts::zero() }, - Stable => Counts { stable: 1, .. Counts::zero() }, + Some(ref stab) => { + if !stab.deprecated_since.is_empty() { + return Counts { deprecated: 1, .. Counts::zero() }; + } + match stab.level { + Unstable => Counts { unstable: 1, .. Counts::zero() }, + Stable => Counts { stable: 1, .. Counts::zero() }, + } } } } |
