diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2020-06-07 17:08:26 -0400 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2020-07-16 18:26:57 -0400 |
| commit | 24c3d85e66b0fd719d9ffa70ae5e56593cb9b644 (patch) | |
| tree | 5860911f8591ee909c4420b0a549783f5e19cad2 | |
| parent | 20106d5a2fda0f2fef97ce253e5d78d4cf030289 (diff) | |
| download | rust-24c3d85e66b0fd719d9ffa70ae5e56593cb9b644.tar.gz rust-24c3d85e66b0fd719d9ffa70ae5e56593cb9b644.zip | |
Make sure that module_id is actually a module
| -rw-r--r-- | src/librustdoc/passes/collect_intra_doc_links.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs index 65b852f1d61..487a4a5b0a2 100644 --- a/src/librustdoc/passes/collect_intra_doc_links.rs +++ b/src/librustdoc/passes/collect_intra_doc_links.rs @@ -466,7 +466,19 @@ impl<'a, 'tcx> DocFolder for LinkCollector<'a, 'tcx> { // FIXME: is this correct? None } else { - self.cx.tcx.parent(item.def_id) + let mut current = item.def_id; + // The immediate parent might not always be a module. + // Find the first parent which is. + loop { + if let Some(parent) = self.cx.tcx.parent(current) { + if self.cx.tcx.def_kind(parent) == DefKind::Mod { + break Some(parent); + } + current = parent; + } else { + break None; + } + } }; if parent_node.is_some() { |
