about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustdoc/html/format.rs2
-rw-r--r--src/librustdoc/html/render.rs11
-rw-r--r--src/test/rustdoc/double-quote-escape.rs23
-rw-r--r--src/tools/linkchecker/main.rs1
4 files changed, 31 insertions, 6 deletions
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 18d6b1cc1e0..2f5150d799f 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -601,7 +601,7 @@ fn fmt_type(t: &clean::Type, f: &mut fmt::Formatter, use_absolute: bool) -> fmt:
         clean::Primitive(prim) => primitive_link(f, prim, prim.as_str()),
         clean::BareFunction(ref decl) => {
             if f.alternate() {
-                write!(f, "{}{}fn{:#}{:#}",
+                write!(f, "{}{:#}fn{:#}{:#}",
                        UnsafetySpace(decl.unsafety),
                        AbiSpace(decl.abi),
                        decl.generics,
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index cf557b1c661..5e7d4a8bc04 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -2292,8 +2292,8 @@ fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
                            f.generics).len();
     write!(w, "{}<pre class='rust fn'>", render_spotlight_traits(it)?)?;
     render_attributes(w, it)?;
-    write!(w, "{vis}{constness}{unsafety}{abi}fn \
-               {name}{generics}{decl}{where_clause}</pre>",
+    write!(w,
+           "{vis}{constness}{unsafety}{abi}fn {name}{generics}{decl}{where_clause}</pre>",
            vis = VisSpace(&it.visibility),
            constness = ConstnessSpace(f.constness),
            unsafety = UnsafetySpace(f.unsafety),
@@ -2302,9 +2302,9 @@ fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
            generics = f.generics,
            where_clause = WhereClause { gens: &f.generics, indent: 0, end_newline: true },
            decl = Method {
-               decl: &f.decl,
-               name_len,
-               indent: 0,
+              decl: &f.decl,
+              name_len,
+              indent: 0,
            })?;
     document(w, cx, it)
 }
@@ -3658,6 +3658,7 @@ fn small_url_encode(s: &str) -> String {
      .replace(";", "%3B")
      .replace("[", "%5B")
      .replace("]", "%5D")
+     .replace("\"", "%22")
 }
 
 fn sidebar_assoc_items(it: &clean::Item) -> String {
diff --git a/src/test/rustdoc/double-quote-escape.rs b/src/test/rustdoc/double-quote-escape.rs
new file mode 100644
index 00000000000..46e2ca8c760
--- /dev/null
+++ b/src/test/rustdoc/double-quote-escape.rs
@@ -0,0 +1,23 @@
+// Copyright 2017 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 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![crate_name = "foo"]
+
+// ignore-tidy-linelength
+
+pub trait Foo<T> {
+    fn foo() {}
+}
+
+pub struct Bar;
+
+// @has foo/struct.Bar.html
+// @has - '//*[@class="sidebar-links"]/a[@href="#impl-Foo%3Cunsafe%20extern%20%22C%22%20fn()%3E"]' 'Foo<unsafe extern "C" fn()>'
+impl Foo<unsafe extern "C" fn()> for Bar {}
diff --git a/src/tools/linkchecker/main.rs b/src/tools/linkchecker/main.rs
index e0153e1e6f6..3b0925d3ef6 100644
--- a/src/tools/linkchecker/main.rs
+++ b/src/tools/linkchecker/main.rs
@@ -81,6 +81,7 @@ fn small_url_encode(s: &str) -> String {
      .replace(";", "%3B")
      .replace("[", "%5B")
      .replace("]", "%5D")
+     .replace("\"", "%22")
 }
 
 impl FileEntry {