about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2020-05-04 15:26:17 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2020-05-14 11:35:44 +0200
commit883c177abb216fcef5b2d2369970394b0967f302 (patch)
tree34b9fdecabc434035d378415a7713327d4cfbc46
parentf581cf754492f9f122193b8d8a7750ab38a87485 (diff)
downloadrust-883c177abb216fcef5b2d2369970394b0967f302.tar.gz
rust-883c177abb216fcef5b2d2369970394b0967f302.zip
Move doc alias discovery into the Attributes struct and some code improvements
-rw-r--r--src/librustdoc/clean/types.rs9
-rw-r--r--src/librustdoc/html/render.rs2
-rw-r--r--src/librustdoc/html/render/cache.rs41
-rw-r--r--src/librustdoc/html/static/main.js2
4 files changed, 15 insertions, 39 deletions
diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs
index 0a682857b18..cd767802714 100644
--- a/src/librustdoc/clean/types.rs
+++ b/src/librustdoc/clean/types.rs
@@ -643,6 +643,15 @@ impl Attributes {
             })
             .collect()
     }
+
+    pub fn get_doc_aliases(&self) -> FxHashSet<String> {
+        self.other_attrs
+            .lists(sym::doc)
+            .filter(|a| a.check_name(sym::alias))
+            .filter_map(|a| a.value_str().map(|s| s.to_string().replace("\"", "")))
+            .filter(|v| !v.is_empty())
+            .collect::<FxHashSet<_>>()
+    }
 }
 
 impl PartialEq for Attributes {
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 9454baf7640..abca8ab778c 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -278,7 +278,7 @@ pub struct RenderInfo {
 /// Struct representing one entry in the JS search index. These are all emitted
 /// by hand to a large JS file at the end of cache-creation.
 #[derive(Debug)]
-pub struct IndexItem {
+struct IndexItem {
     ty: ItemType,
     name: String,
     path: String,
diff --git a/src/librustdoc/html/render/cache.rs b/src/librustdoc/html/render/cache.rs
index 53cf1abb16d..b8d97c2ac50 100644
--- a/src/librustdoc/html/render/cache.rs
+++ b/src/librustdoc/html/render/cache.rs
@@ -328,15 +328,7 @@ impl DocFolder for Cache {
                             search_type: get_index_search_type(&item),
                         });
 
-                        for alias in item
-                            .attrs
-                            .lists(sym::doc)
-                            .filter(|a| a.check_name(sym::alias))
-                            .filter_map(|a| a.value_str().map(|s| s.to_string().replace("\"", "")))
-                            .filter(|v| !v.is_empty())
-                            .collect::<FxHashSet<_>>()
-                            .into_iter()
-                        {
+                        for alias in item.attrs.get_doc_aliases() {
                             self.aliases
                                 .entry(alias.to_lowercase())
                                 .or_insert(Vec::with_capacity(1))
@@ -378,9 +370,6 @@ impl DocFolder for Cache {
             | clean::MacroItem(..)
             | clean::ProcMacroItem(..)
             | clean::VariantItem(..)
-            | clean::StructFieldItem(..)
-            | clean::TyMethodItem(..)
-            | clean::MethodItem(..)
                 if !self.stripped_mod =>
             {
                 // Re-exported items mean that the same id can show up twice
@@ -564,15 +553,7 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> String {
                 parent_idx: None,
                 search_type: get_index_search_type(&item),
             });
-            for alias in item
-                .attrs
-                .lists(sym::doc)
-                .filter(|a| a.check_name(sym::alias))
-                .filter_map(|a| a.value_str().map(|s| s.to_string().replace("\"", "")))
-                .filter(|v| !v.is_empty())
-                .collect::<FxHashSet<_>>()
-                .into_iter()
-            {
+            for alias in item.attrs.get_doc_aliases().into_iter() {
                 aliases
                     .entry(alias.to_lowercase())
                     .or_insert(Vec::with_capacity(1))
@@ -619,22 +600,8 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> String {
         .map(|module| shorten(plain_summary_line(module.doc_value())))
         .unwrap_or(String::new());
 
-    let crate_aliases = aliases
-        .iter()
-        .map(|(k, values)| {
-            (
-                k.clone(),
-                values
-                    .iter()
-                    .filter_map(|v| {
-                        let x = &crate_items[*v];
-                        if x.parent_idx.is_some() == x.parent.is_some() { Some(*v) } else { None }
-                    })
-                    .collect::<Vec<_>>(),
-            )
-        })
-        .filter(|(_, values)| !values.is_empty())
-        .collect::<Vec<_>>();
+    let crate_aliases =
+        aliases.iter().map(|(k, values)| (k.clone(), values.clone())).collect::<Vec<_>>();
 
     #[derive(Serialize)]
     struct CrateData<'a> {
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 94ae69fde57..22e312e13c0 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -972,7 +972,7 @@ function getSearchElement() {
                     desc: item.desc,
                     ty: item.ty,
                     parent: item.parent,
-                    type: item.parent,
+                    type: item.type,
                     is_alias: true,
                 };
             }