Auto merge of #55798 - GuillaumeGomez:version-display-associated-const, r=QuietMisdreavus
Add version display for associated consts Fixes #54030. <img width="1440" alt="screenshot 2018-11-08 at 23 57 29" src="https://user-images.githubusercontent.com/3050060/48232648-99decf00-e3b2-11e8-9f41-6bd12a161c7d.png"> r? @QuietMisdreavus
This commit is contained in:
commit
6d34ec18c7
4 changed files with 79 additions and 33 deletions
|
@ -3037,15 +3037,14 @@ fn item_trait(
|
|||
let item_type = m.type_();
|
||||
let id = cx.derive_id(format!("{}.{}", item_type, name));
|
||||
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
|
||||
write!(w, "{extra}<h3 id='{id}' class='method'>\
|
||||
<span id='{ns_id}' class='invisible'><code>",
|
||||
write!(w, "{extra}<h3 id='{id}' class='method'><code id='{ns_id}'>",
|
||||
extra = render_spotlight_traits(m)?,
|
||||
id = id,
|
||||
ns_id = ns_id)?;
|
||||
render_assoc_item(w, m, AssocItemLink::Anchor(Some(&id)), ItemType::Impl)?;
|
||||
write!(w, "</code>")?;
|
||||
render_stability_since(w, m, t)?;
|
||||
write!(w, "</span></h3>")?;
|
||||
write!(w, "</h3>")?;
|
||||
document(w, cx, m)?;
|
||||
Ok(())
|
||||
}
|
||||
|
@ -3237,13 +3236,14 @@ fn assoc_type<W: fmt::Write>(w: &mut W, it: &clean::Item,
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn render_stability_since_raw<'a>(w: &mut fmt::Formatter,
|
||||
ver: Option<&'a str>,
|
||||
containing_ver: Option<&'a str>) -> fmt::Result {
|
||||
fn render_stability_since_raw<'a, T: fmt::Write>(
|
||||
w: &mut T,
|
||||
ver: Option<&'a str>,
|
||||
containing_ver: Option<&'a str>,
|
||||
) -> fmt::Result {
|
||||
if let Some(v) = ver {
|
||||
if containing_ver != ver && v.len() > 0 {
|
||||
write!(w, "<div class='since' title='Stable since Rust version {0}'>{0}</div>",
|
||||
v)?
|
||||
write!(w, "<div class='since' title='Stable since Rust version {0}'>{0}</div>", v)?
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
@ -3373,11 +3373,10 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
|
|||
let ns_id = cx.derive_id(format!("{}.{}",
|
||||
field.name.as_ref().unwrap(),
|
||||
ItemType::StructField.name_space()));
|
||||
write!(w, "<span id=\"{id}\" class=\"{item_type} small-section-header\">
|
||||
<a href=\"#{id}\" class=\"anchor field\"></a>
|
||||
<span id=\"{ns_id}\" class='invisible'>
|
||||
<code>{name}: {ty}</code>
|
||||
</span></span>",
|
||||
write!(w, "<span id=\"{id}\" class=\"{item_type} small-section-header\">\
|
||||
<a href=\"#{id}\" class=\"anchor field\"></a>\
|
||||
<code id=\"{ns_id}\">{name}: {ty}</code>\
|
||||
</span>",
|
||||
item_type = ItemType::StructField,
|
||||
id = id,
|
||||
ns_id = ns_id,
|
||||
|
@ -3509,7 +3508,7 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
|
|||
ItemType::Variant.name_space()));
|
||||
write!(w, "<span id=\"{id}\" class=\"variant small-section-header\">\
|
||||
<a href=\"#{id}\" class=\"anchor field\"></a>\
|
||||
<span id='{ns_id}' class='invisible'><code>{name}",
|
||||
<code id='{ns_id}'>{name}",
|
||||
id = id,
|
||||
ns_id = ns_id,
|
||||
name = variant.name.as_ref().unwrap())?;
|
||||
|
@ -3525,7 +3524,7 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
|
|||
write!(w, ")")?;
|
||||
}
|
||||
}
|
||||
write!(w, "</code></span></span>")?;
|
||||
write!(w, "</code></span>")?;
|
||||
document(w, cx, variant)?;
|
||||
|
||||
use clean::{Variant, VariantKind};
|
||||
|
@ -3552,8 +3551,8 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
|
|||
ItemType::StructField.name_space()));
|
||||
write!(w, "<span id=\"{id}\" class=\"variant small-section-header\">\
|
||||
<a href=\"#{id}\" class=\"anchor field\"></a>\
|
||||
<span id='{ns_id}' class='invisible'><code>{f}: {t}\
|
||||
</code></span></span>",
|
||||
<code id='{ns_id}'>{f}: {t}\
|
||||
</code></span>",
|
||||
id = id,
|
||||
ns_id = ns_id,
|
||||
f = field.name.as_ref().unwrap(),
|
||||
|
@ -3998,7 +3997,7 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
|
|||
id, i.inner_impl())?;
|
||||
}
|
||||
write!(w, "<a href='#{}' class='anchor'></a>", id)?;
|
||||
write!(w, "</span></td><td><span class='out-of-band'>")?;
|
||||
write!(w, "</td><td><span class='out-of-band'>")?;
|
||||
let since = i.impl_item.stability.as_ref().map(|s| &s.since[..]);
|
||||
if let Some(l) = (Item { item: &i.impl_item, cx: cx }).src_href() {
|
||||
write!(w, "<div class='ghost'></div>")?;
|
||||
|
@ -4008,7 +4007,7 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
|
|||
} else {
|
||||
render_stability_since_raw(w, since, outer_version)?;
|
||||
}
|
||||
write!(w, "</span></td></tr></tbody></table></h3>")?;
|
||||
write!(w, "</span></td></tr></tbody></table></span></h3>")?;
|
||||
if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
|
||||
let mut ids = cx.id_map.borrow_mut();
|
||||
write!(w, "<div class='docblock'>{}</div>",
|
||||
|
@ -4044,52 +4043,73 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
|
|||
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
|
||||
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class)?;
|
||||
write!(w, "{}", spotlight_decl(decl)?)?;
|
||||
write!(w, "<span id='{}' class='invisible'>", ns_id)?;
|
||||
write!(w, "<table class='table-display'><tbody><tr><td><code>")?;
|
||||
write!(w, "<table id='{}' class='table-display'><tbody><tr><td><code>", ns_id)?;
|
||||
render_assoc_item(w, item, link.anchor(&id), ItemType::Impl)?;
|
||||
write!(w, "</code>")?;
|
||||
if let Some(l) = (Item { cx, item }).src_href() {
|
||||
write!(w, "</span></td><td><span class='out-of-band'>")?;
|
||||
write!(w, "</td><td><span class='out-of-band'>")?;
|
||||
write!(w, "<div class='ghost'></div>")?;
|
||||
render_stability_since_raw(w, item.stable_since(), outer_version)?;
|
||||
write!(w, "<a class='srclink' href='{}' title='{}'>[src]</a>",
|
||||
write!(w, "<a class='srclink' href='{}' title='{}'>[src]</a></span>",
|
||||
l, "goto source code")?;
|
||||
} else {
|
||||
write!(w, "</td><td>")?;
|
||||
render_stability_since_raw(w, item.stable_since(), outer_version)?;
|
||||
}
|
||||
write!(w, "</td></tr></tbody></table></span></h4>")?;
|
||||
write!(w, "</td></tr></tbody></table></h4>")?;
|
||||
}
|
||||
}
|
||||
clean::TypedefItem(ref tydef, _) => {
|
||||
let id = cx.derive_id(format!("{}.{}", ItemType::AssociatedType, name));
|
||||
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
|
||||
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class)?;
|
||||
write!(w, "<span id='{}' class='invisible'><code>", ns_id)?;
|
||||
write!(w, "<code id='{}'>", ns_id)?;
|
||||
assoc_type(w, item, &Vec::new(), Some(&tydef.type_), link.anchor(&id))?;
|
||||
write!(w, "</code></span></h4>\n")?;
|
||||
write!(w, "</code></h4>")?;
|
||||
}
|
||||
clean::AssociatedConstItem(ref ty, ref default) => {
|
||||
let mut version = String::new();
|
||||
|
||||
render_stability_since_raw(&mut version, item.stable_since(), outer_version)?;
|
||||
|
||||
let id = cx.derive_id(format!("{}.{}", item_type, name));
|
||||
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
|
||||
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class)?;
|
||||
write!(w, "<span id='{}' class='invisible'><code>", ns_id)?;
|
||||
if !version.is_empty() {
|
||||
write!(w, "<table id='{}' class='table-display'><tbody><tr><td><code>", ns_id)?;
|
||||
} else {
|
||||
write!(w, "<code id='{}'>", ns_id)?;
|
||||
}
|
||||
assoc_const(w, item, ty, default.as_ref(), link.anchor(&id))?;
|
||||
if !version.is_empty() {
|
||||
write!(w, "</code>")?;
|
||||
}
|
||||
let src = if let Some(l) = (Item { cx, item }).src_href() {
|
||||
if !version.is_empty() {
|
||||
write!(w, "</td><td><span class='out-of-band'>")?;
|
||||
write!(w, "<div class='ghost'></div>{}", version)?;
|
||||
}
|
||||
format!("<a class='srclink' href='{}' title='{}'>[src]</a>",
|
||||
l, "goto source code")
|
||||
} else {
|
||||
if !version.is_empty() {
|
||||
write!(w, "</td><td>{}", version)?;
|
||||
}
|
||||
String::new()
|
||||
};
|
||||
write!(w, "</code>{}</span></h4>\n", src)?;
|
||||
if version.is_empty() {
|
||||
write!(w, "</code>{}</h4>", src)?;
|
||||
} else {
|
||||
write!(w, "{}</span></td></tr></tbody></table></h4>", src)?;
|
||||
}
|
||||
}
|
||||
clean::AssociatedTypeItem(ref bounds, ref default) => {
|
||||
let id = cx.derive_id(format!("{}.{}", item_type, name));
|
||||
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
|
||||
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class)?;
|
||||
write!(w, "<span id='{}' class='invisible'><code>", ns_id)?;
|
||||
write!(w, "<code id='{}'>", ns_id)?;
|
||||
assoc_type(w, item, bounds, default.as_ref(), link.anchor(&id))?;
|
||||
write!(w, "</code></span></h4>\n")?;
|
||||
write!(w, "</code></h4>")?;
|
||||
}
|
||||
clean::StrippedItem(..) => return Ok(()),
|
||||
_ => panic!("can't make docs for trait item with name {:?}", item.name)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue