about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamelid <camelidcamel@gmail.com>2020-12-25 16:33:15 -0800
committerCamelid <camelidcamel@gmail.com>2020-12-25 16:33:15 -0800
commit4b1b277cf90886466e2e0dc5017ea535ef5e00ce (patch)
treead761f6ea9ac7c399594221844134bee8873918e
parentbb4761d1ebd47ec966a4774c087c645dc3a0227d (diff)
downloadrust-4b1b277cf90886466e2e0dc5017ea535ef5e00ce.tar.gz
rust-4b1b277cf90886466e2e0dc5017ea535ef5e00ce.zip
Add missing code to `find_closest_parent_module`
-rw-r--r--src/librustdoc/clean/utils.rs40
-rw-r--r--src/librustdoc/passes/collect_intra_doc_links.rs10
2 files changed, 25 insertions, 25 deletions
diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs
index fe1b5816447..4b9541b7e14 100644
--- a/src/librustdoc/clean/utils.rs
+++ b/src/librustdoc/clean/utils.rs
@@ -626,23 +626,31 @@ where
 }
 
 crate fn find_closest_parent_module(tcx: TyCtxt<'_>, def_id: DefId) -> Option<DefId> {
-    let mut current = def_id;
-    // The immediate parent might not always be a module.
-    // Find the first parent which is.
-    loop {
-        if let Some(parent) = tcx.parent(current) {
-            if tcx.def_kind(parent) == DefKind::Mod {
-                break Some(parent);
+    if item.is_fake() {
+        // FIXME: is this correct?
+        None
+    // If we're documenting the crate root itself, it has no parent. Use the root instead.
+    } else if item.def_id.is_top_level_module() {
+        Some(item.def_id)
+    } else {
+        let mut current = def_id;
+        // The immediate parent might not always be a module.
+        // Find the first parent which is.
+        loop {
+            if let Some(parent) = tcx.parent(current) {
+                if tcx.def_kind(parent) == DefKind::Mod {
+                    break Some(parent);
+                }
+                current = parent;
+            } else {
+                debug!(
+                    "{:?} has no parent (kind={:?}, original was {:?})",
+                    current,
+                    tcx.def_kind(current),
+                    def_id
+                );
+                break None;
             }
-            current = parent;
-        } else {
-            debug!(
-                "{:?} has no parent (kind={:?}, original was {:?})",
-                current,
-                tcx.def_kind(current),
-                def_id
-            );
-            break None;
         }
     }
 }
diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs
index f392f321fbf..4e261c3fd19 100644
--- a/src/librustdoc/passes/collect_intra_doc_links.rs
+++ b/src/librustdoc/passes/collect_intra_doc_links.rs
@@ -767,15 +767,7 @@ impl<'a, 'tcx> DocFolder for LinkCollector<'a, 'tcx> {
     fn fold_item(&mut self, mut item: Item) -> Option<Item> {
         use rustc_middle::ty::DefIdTree;
 
-        let parent_node = if item.is_fake() {
-            // FIXME: is this correct?
-            None
-        // If we're documenting the crate root itself, it has no parent. Use the root instead.
-        } else if item.def_id.is_top_level_module() {
-            Some(item.def_id)
-        } else {
-            find_closest_parent_module(self.cx.tcx, item.def_id)
-        };
+        let parent_node = find_closest_parent_module(self.cx.tcx, item.def_id);
 
         if parent_node.is_some() {
             trace!("got parent node for {:?} {:?}, id {:?}", item.type_(), item.name, item.def_id);