From c9c120024467de5f8b933b9dea97c5d0d776ef71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Fri, 29 Jan 2021 11:45:27 +0100 Subject: [PATCH] Address review comments --- src/librustdoc/html/escape.rs | 6 ++++-- src/librustdoc/html/render/mod.rs | 15 ++++++++------- src/librustdoc/html/sources.rs | 3 +-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/librustdoc/html/escape.rs b/src/librustdoc/html/escape.rs index 5200eb3b9071d..ce44722a532b0 100644 --- a/src/librustdoc/html/escape.rs +++ b/src/librustdoc/html/escape.rs @@ -16,8 +16,8 @@ impl<'a> fmt::Display for Escape<'a> { let Escape(s) = *self; let pile_o_bits = s; let mut last = 0; - for (i, ch) in s.bytes().enumerate() { - let s = match ch as char { + for (i, ch) in s.char_indices() { + let s = match ch { '>' => ">", '<' => "<", '&' => "&", @@ -27,6 +27,8 @@ impl<'a> fmt::Display for Escape<'a> { }; fmt.write_str(&pile_o_bits[last..i])?; fmt.write_str(s)?; + // NOTE: we only expect single byte characters here - which is fine as long as we + // only match single byte characters last = i + 1; } diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index c869faa62d380..daaa2c719b0e6 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -359,7 +359,6 @@ crate struct StylePath { thread_local!(crate static CURRENT_DEPTH: Cell = Cell::new(0)); -// FIXME: make this work crate const INITIAL_IDS: [&'static str; 15] = [ "main", "search", @@ -4101,7 +4100,7 @@ fn item_typedef(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::T } fn item_foreign_type(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item) { - w.write_str("
extern {");
+    w.write_str("
extern {\n");
     render_attributes(w, it, false);
     write!(
         w,
@@ -4264,8 +4263,8 @@ fn get_methods(
 fn small_url_encode(s: String) -> String {
     let mut st = String::new();
     let mut last_match = 0;
-    for (idx, c) in s.bytes().enumerate() {
-        let escaped = match c as char {
+    for (idx, c) in s.char_indices() {
+        let escaped = match c {
             '<' => "%3C",
             '>' => "%3E",
             ' ' => "%20",
@@ -4283,6 +4282,8 @@ fn small_url_encode(s: String) -> String {
 
         st += &s[last_match..idx];
         st += escaped;
+        // NOTE: we only expect single byte characters here - which is fine as long as we
+        // only match single byte characters
         last_match = idx + 1;
     }
 
@@ -4834,12 +4835,12 @@ fn item_proc_macro(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, m: &clean
             w.push_str("
");
             write!(w, "#[derive({})]", name);
             if !m.helpers.is_empty() {
-                w.push_str("\n{");
-                w.push_str("    // Attributes available to this derive:");
+                w.push_str("\n{\n");
+                w.push_str("    // Attributes available to this derive:\n");
                 for attr in &m.helpers {
                     writeln!(w, "    #[{}]", attr);
                 }
-                w.push_str("}");
+                w.push_str("}\n");
             }
             w.push_str("
"); } diff --git a/src/librustdoc/html/sources.rs b/src/librustdoc/html/sources.rs index d4006c878cad6..bbb833e54aeb9 100644 --- a/src/librustdoc/html/sources.rs +++ b/src/librustdoc/html/sources.rs @@ -94,8 +94,7 @@ impl SourceCollector<'_, '_> { }; // Remove the utf-8 BOM if any - let contents = - if contents.starts_with('\u{feff}') { &contents[3..] } else { &contents[..] }; + let contents = if contents.starts_with('\u{feff}') { &contents[3..] } else { &contents }; // Create the intermediate directories let mut cur = self.dst.clone();