Skip to content

Commit

Permalink
Always display stability version even if it's the same as the contain…
Browse files Browse the repository at this point in the history
…ing item
  • Loading branch information
GuillaumeGomez committed Nov 29, 2023
1 parent b29a1e0 commit 00779af
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 61 deletions.
7 changes: 0 additions & 7 deletions src/librustdoc/clean/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -592,13 +592,6 @@ impl Item {
}
}

pub(crate) fn const_stable_since(&self, tcx: TyCtxt<'_>) -> Option<StableSince> {
match self.const_stability(tcx)?.level {
StabilityLevel::Stable { since, .. } => Some(since),
StabilityLevel::Unstable { .. } => None,
}
}

pub(crate) fn is_non_exhaustive(&self) -> bool {
self.attrs.other_attrs.iter().any(|a| a.has_name(sym::non_exhaustive))
}
Expand Down
62 changes: 13 additions & 49 deletions src/librustdoc/html/render/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -940,32 +940,20 @@ fn assoc_method(
/// consequence of the above rules.
fn render_stability_since_raw_with_extra(
w: &mut Buffer,
ver: Option<StableSince>,
stable_version: Option<StableSince>,
const_stability: Option<ConstStability>,
containing_ver: Option<StableSince>,
containing_const_ver: Option<StableSince>,
extra_class: &str,
) -> bool {
let stable_version = if ver != containing_ver
&& let Some(ver) = &ver
{
since_to_string(ver)
} else {
None
};

let mut title = String::new();
let mut stability = String::new();

if let Some(ver) = stable_version {
stability.push_str(ver.as_str());
title.push_str(&format!("Stable since Rust version {ver}"));
if let Some(version) = stable_version.and_then(|version| since_to_string(&version)) {
stability.push_str(&version);
title.push_str(&format!("Stable since Rust version {version}"));
}

let const_title_and_stability = match const_stability {
Some(ConstStability { level: StabilityLevel::Stable { since, .. }, .. })
if Some(since) != containing_const_ver =>
{
Some(ConstStability { level: StabilityLevel::Stable { since, .. }, .. }) => {
since_to_string(&since)
.map(|since| (format!("const since {since}"), format!("const: {since}")))
}
Expand Down Expand Up @@ -1020,17 +1008,8 @@ fn render_stability_since_raw(
w: &mut Buffer,
ver: Option<StableSince>,
const_stability: Option<ConstStability>,
containing_ver: Option<StableSince>,
containing_const_ver: Option<StableSince>,
) -> bool {
render_stability_since_raw_with_extra(
w,
ver,
const_stability,
containing_ver,
containing_const_ver,
"",
)
render_stability_since_raw_with_extra(w, ver, const_stability, "")
}

fn render_assoc_item(
Expand Down Expand Up @@ -1520,7 +1499,6 @@ fn render_impl(
cx: &mut Context<'_>,
item: &clean::Item,
parent: &clean::Item,
containing_item: &clean::Item,
link: AssocItemLink<'_>,
render_mode: RenderMode,
is_default_item: bool,
Expand Down Expand Up @@ -1615,7 +1593,7 @@ fn render_impl(
})
.map(|item| format!("{}.{name}", item.type_()));
write!(w, "<section id=\"{id}\" class=\"{item_type}{in_trait_class}\">");
render_rightside(w, cx, item, containing_item, render_mode);
render_rightside(w, cx, item, render_mode);
if trait_.is_some() {
// Anchors are only used on trait impls.
write!(w, "<a href=\"#{id}\" class=\"anchor\">§</a>");
Expand All @@ -1637,7 +1615,7 @@ fn render_impl(
let source_id = format!("{item_type}.{name}");
let id = cx.derive_id(&source_id);
write!(w, "<section id=\"{id}\" class=\"{item_type}{in_trait_class}\">");
render_rightside(w, cx, item, containing_item, render_mode);
render_rightside(w, cx, item, render_mode);
if trait_.is_some() {
// Anchors are only used on trait impls.
write!(w, "<a href=\"#{id}\" class=\"anchor\">§</a>");
Expand Down Expand Up @@ -1723,7 +1701,6 @@ fn render_impl(
cx,
trait_item,
if trait_.is_some() { &i.impl_item } else { parent },
parent,
link,
render_mode,
false,
Expand All @@ -1739,7 +1716,6 @@ fn render_impl(
t: &clean::Trait,
i: &clean::Impl,
parent: &clean::Item,
containing_item: &clean::Item,
render_mode: RenderMode,
rendering_params: ImplRenderingParameters,
) {
Expand Down Expand Up @@ -1767,7 +1743,6 @@ fn render_impl(
cx,
trait_item,
parent,
containing_item,
assoc_link,
render_mode,
true,
Expand All @@ -1790,7 +1765,6 @@ fn render_impl(
t,
i.inner_impl(),
&i.impl_item,
parent,
render_mode,
rendering_params,
);
Expand All @@ -1812,7 +1786,6 @@ fn render_impl(
cx,
i,
parent,
parent,
rendering_params.show_def_docs,
use_absolute,
aliases,
Expand Down Expand Up @@ -1860,20 +1833,14 @@ fn render_impl(

// Render the items that appear on the right side of methods, impls, and
// associated types. For example "1.0.0 (const: 1.39.0) · source".
fn render_rightside(
w: &mut Buffer,
cx: &Context<'_>,
item: &clean::Item,
containing_item: &clean::Item,
render_mode: RenderMode,
) {
fn render_rightside(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, render_mode: RenderMode) {
let tcx = cx.tcx();

// FIXME: Once https://github.com/rust-lang/rust/issues/67792 is implemented, we can remove
// this condition.
let (const_stability, const_stable_since) = match render_mode {
RenderMode::Normal => (item.const_stability(tcx), containing_item.const_stable_since(tcx)),
RenderMode::ForDeref { .. } => (None, None),
let const_stability = match render_mode {
RenderMode::Normal => item.const_stability(tcx),
RenderMode::ForDeref { .. } => None,
};
let src_href = cx.src_href(item);
let has_src_ref = src_href.is_some();
Expand All @@ -1883,8 +1850,6 @@ fn render_rightside(
&mut rightside,
item.stable_since(tcx),
const_stability,
containing_item.stable_since(tcx),
const_stable_since,
if has_src_ref { "" } else { " rightside" },
);
if let Some(link) = src_href {
Expand All @@ -1906,7 +1871,6 @@ pub(crate) fn render_impl_summary(
cx: &mut Context<'_>,
i: &Impl,
parent: &clean::Item,
containing_item: &clean::Item,
show_def_docs: bool,
use_absolute: Option<bool>,
// This argument is used to reference same type with different paths to avoid duplication
Expand All @@ -1921,7 +1885,7 @@ pub(crate) fn render_impl_summary(
format!(" data-aliases=\"{}\"", aliases.join(","))
};
write!(w, "<section id=\"{id}\" class=\"impl\"{aliases}>");
render_rightside(w, cx, &i.impl_item, containing_item, RenderMode::Normal);
render_rightside(w, cx, &i.impl_item, RenderMode::Normal);
write!(
w,
"<a href=\"#{id}\" class=\"anchor\">§</a>\
Expand Down
6 changes: 1 addition & 5 deletions src/librustdoc/html/render/print_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,6 @@ pub(super) fn print_item(
&mut stability_since_raw,
item.stable_since(cx.tcx()),
item.const_stability(cx.tcx()),
None,
None,
);
let stability_since_raw: String = stability_since_raw.into_inner();

Expand Down Expand Up @@ -846,7 +844,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
write!(w, "<details class=\"toggle{method_toggle_class}\" open><summary>");
}
write!(w, "<section id=\"{id}\" class=\"method\">");
render_rightside(w, cx, m, t, RenderMode::Normal);
render_rightside(w, cx, m, RenderMode::Normal);
write!(w, "<h4 class=\"code-header\">");
render_assoc_item(
w,
Expand Down Expand Up @@ -1707,8 +1705,6 @@ fn item_variants(
w,
variant.stable_since(tcx),
variant.const_stability(tcx),
it.stable_since(tcx),
it.const_stable_since(tcx),
" rightside",
);
w.write_str("<h3 class=\"code-header\">");
Expand Down

0 comments on commit 00779af

Please sign in to comment.