diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-12-16 21:48:02 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-12-18 01:04:23 +0100 |
| commit | 2968a5a3980e9b21052d77b897901a28d30aaf18 (patch) | |
| tree | 087f2436eec2068aa0e09f255e57fe3b6c74aa0b | |
| parent | b56cec03215e8689f02f3839b3d87afbcf260558 (diff) | |
| download | rust-2968a5a3980e9b21052d77b897901a28d30aaf18.tar.gz rust-2968a5a3980e9b21052d77b897901a28d30aaf18.zip | |
Fix DOM errors
| -rw-r--r-- | src/librustdoc/html/render.rs | 54 | ||||
| -rw-r--r-- | src/librustdoc/html/static/rustdoc.css | 2 | ||||
| -rw-r--r-- | src/test/rustdoc/assoc-types.rs | 4 |
3 files changed, 28 insertions, 32 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 138d0ebd92b..99246e4a058 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -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(()) } @@ -3374,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, @@ -3510,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())?; @@ -3526,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}; @@ -3553,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(), @@ -3999,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>")?; @@ -4009,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>", @@ -4045,30 +4043,29 @@ 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>")?; + write!(w, "</code></h4>")?; } clean::AssociatedConstItem(ref ty, ref default) => { let mut version = String::new(); @@ -4078,11 +4075,10 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi 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'>", ns_id)?; if !version.is_empty() { - write!(w, "<table class='table-display'><tbody><tr><td><code>")?; + write!(w, "<table id='{}' class='table-display'><tbody><tr><td><code>", ns_id)?; } else { - write!(w, "<code>")?; + write!(w, "<code id='{}'>", ns_id)?; } assoc_const(w, item, ty, default.as_ref(), link.anchor(&id))?; if !version.is_empty() { @@ -4090,7 +4086,7 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi } let src = if let Some(l) = (Item { cx, item }).src_href() { if !version.is_empty() { - 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>{}", version)?; } format!("<a class='srclink' href='{}' title='{}'>[src]</a>", @@ -4102,18 +4098,18 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi String::new() }; if version.is_empty() { - write!(w, "</code>{}</span></h4>", src)?; + write!(w, "</code>{}</h4>", src)?; } else { - write!(w, "{}</td></tr></tbody></table></span></h4>", src)?; + 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) diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css index d1336b1e8eb..fc3705e3c77 100644 --- a/src/librustdoc/html/static/rustdoc.css +++ b/src/librustdoc/html/static/rustdoc.css @@ -611,7 +611,7 @@ a { text-decoration: underline; } -.invisible > .srclink { +.invisible > .srclink, h4 > code + .srclink { position: absolute; top: 0; right: 0; diff --git a/src/test/rustdoc/assoc-types.rs b/src/test/rustdoc/assoc-types.rs index d152be33f4c..100bf7af0e9 100644 --- a/src/test/rustdoc/assoc-types.rs +++ b/src/test/rustdoc/assoc-types.rs @@ -15,9 +15,9 @@ // @has assoc_types/trait.Index.html pub trait Index<I: ?Sized> { // @has - '//*[@id="associatedtype.Output"]//code' 'type Output: ?Sized' - // @has - '//*[@id="Output.t"]//code' 'type Output: ?Sized' + // @has - '//code[@id="Output.t"]' 'type Output: ?Sized' type Output: ?Sized; - // @has - '//*[@id="index.v"]//code' 'fn index' + // @has - '//code[@id="index.v"]' 'fn index' // @has - '//*[@id="tymethod.index"]//code' \ // "fn index<'a>(&'a self, index: I) -> &'a Self::Output" // @has - '//*[@id="tymethod.index"]//code//a[@href="../assoc_types/trait.Index.html#associatedtype.Output"]' \ |
