diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index 649a5c7ff33b6..00ca4fed2f4a0 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -399,7 +399,6 @@ impl<'a, I: Iterator- >> SummaryLine<'a, I> {
fn check_if_allowed_tag(t: &Tag) -> bool {
match *t {
Tag::Paragraph
- | Tag::CodeBlock(_)
| Tag::Item
| Tag::Emphasis
| Tag::Strong
@@ -420,29 +419,36 @@ impl<'a, I: Iterator
- >> Iterator for SummaryLine<'a, I> {
if !self.started {
self.started = true;
}
- let event = self.inner.next();
- let mut is_start = true;
- let is_allowed_tag = match event {
- Some(Event::Start(ref c)) => {
- self.depth += 1;
- check_if_allowed_tag(c)
- }
- Some(Event::End(ref c)) => {
- self.depth -= 1;
- is_start = false;
- check_if_allowed_tag(c)
- }
- _ => true,
- };
- if is_allowed_tag == false {
- if is_start {
- Some(Event::Start(Tag::Paragraph))
+ while let Some(event) = self.inner.next() {
+ let mut is_start = true;
+ let is_allowed_tag = match event {
+ Event::Start(Tag::CodeBlock(_)) | Event::End(Tag::CodeBlock(_)) => {
+ return None;
+ }
+ Event::Start(ref c) => {
+ self.depth += 1;
+ check_if_allowed_tag(c)
+ }
+ Event::End(ref c) => {
+ self.depth -= 1;
+ is_start = false;
+ check_if_allowed_tag(c)
+ }
+ _ => {
+ true
+ }
+ };
+ return if is_allowed_tag == false {
+ if is_start {
+ Some(Event::Start(Tag::Paragraph))
+ } else {
+ Some(Event::End(Tag::Paragraph))
+ }
} else {
- Some(Event::End(Tag::Paragraph))
- }
- } else {
- event
+ Some(event)
+ };
}
+ None
}
}
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index efd71ad0763e0..b9d259a3cfab4 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -2584,24 +2584,39 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context,
_ => "",
};
+ let stab = myitem.stability_class();
+ let add = if stab.is_some() {
+ " "
+ } else {
+ ""
+ };
+
let doc_value = myitem.doc_value().unwrap_or("");
- write!(w, "
-
- {name}{unsafety_flag} |
-
- {stab_docs} {docs}
- |
+ write!(w, "\
+
\
+ {name}{unsafety_flag} | \
+ {stab_docs}{docs}\
+ | \
",
name = *myitem.name.as_ref().unwrap(),
stab_docs = stab_docs,
docs = MarkdownSummaryLine(doc_value, &myitem.links()),
class = myitem.type_(),
- stab = myitem.stability_class().unwrap_or(String::new()),
+ add = add,
+ stab = stab.unwrap_or_else(|| String::new()),
unsafety_flag = unsafety_flag,
href = item_path(myitem.type_(), myitem.name.as_ref().unwrap()),
- title_type = myitem.type_(),
- title = full_path(cx, myitem))?;
+ title = [full_path(cx, myitem), myitem.type_().to_string()]
+ .iter()
+ .filter_map(|s| if !s.is_empty() {
+ Some(s.as_str())
+ } else {
+ None
+ })
+ .collect::>()
+ .join(" "),
+ )?;
}
}
}
diff --git a/src/test/rustdoc/doc-cfg.rs b/src/test/rustdoc/doc-cfg.rs
index 27077ed4f1ac1..f82dafa251720 100644
--- a/src/test/rustdoc/doc-cfg.rs
+++ b/src/test/rustdoc/doc-cfg.rs
@@ -20,8 +20,8 @@ pub struct Portable;
// @has doc_cfg/unix_only/index.html \
// '//*[@id="main"]/*[@class="stability"]/*[@class="stab portability"]' \
// 'This is supported on Unix only.'
-// @matches - '//*[@class=" module-item"]//*[@class="stab portability"]' '\AUnix\Z'
-// @matches - '//*[@class=" module-item"]//*[@class="stab portability"]' '\AUnix and ARM\Z'
+// @matches - '//*[@class="module-item"]//*[@class="stab portability"]' '\AUnix\Z'
+// @matches - '//*[@class="module-item"]//*[@class="stab portability"]' '\AUnix and ARM\Z'
// @count - '//*[@class="stab portability"]' 3
#[doc(cfg(unix))]
pub mod unix_only {
@@ -52,7 +52,7 @@ pub mod unix_only {
// the portability header is different on the module view versus the full view
// @has doc_cfg/index.html
-// @matches - '//*[@class=" module-item"]//*[@class="stab portability"]' '\Aavx\Z'
+// @matches - '//*[@class="module-item"]//*[@class="stab portability"]' '\Aavx\Z'
// @has doc_cfg/fn.uses_target_feature.html
// @has - '//*[@id="main"]/*[@class="stability"]/*[@class="stab portability"]' \
diff --git a/src/test/rustdoc/short-docblock-codeblock.rs b/src/test/rustdoc/short-docblock-codeblock.rs
new file mode 100644
index 0000000000000..060b349c25177
--- /dev/null
+++ b/src/test/rustdoc/short-docblock-codeblock.rs
@@ -0,0 +1,22 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 or the MIT license
+// , at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![crate_name = "foo"]
+
+// @has foo/index.html '//*[@class="module-item"]//td[@class="docblock-short"]' ""
+// @!has foo/index.html '//*[@id="module-item"]//td[@class="docblock-short"]' "Some text."
+// @!has foo/index.html '//*[@id="module-item"]//td[@class="docblock-short"]' "let x = 12;"
+
+/// ```
+/// let x = 12;
+/// ```
+///
+/// Some text.
+pub fn foo() {}