about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2022-04-05 15:38:18 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2022-04-05 16:55:53 +0300
commit7faaf8f4aa60b954a7370ae04ba90a021fa80fef (patch)
tree8f4f030c99bb0cc78eeb4a95481286ea92d8f45f
parent634770c0a7f8598164ab825cfe419cc8b03c36e5 (diff)
downloadrust-7faaf8f4aa60b954a7370ae04ba90a021fa80fef.tar.gz
rust-7faaf8f4aa60b954a7370ae04ba90a021fa80fef.zip
resolve: Fix resolution of empty paths passed from rustdoc
-rw-r--r--compiler/rustc_resolve/src/lib.rs4
-rw-r--r--src/test/rustdoc-ui/intra-doc/global-path.rs8
-rw-r--r--src/test/rustdoc-ui/intra-doc/global-path.stderr10
3 files changed, 21 insertions, 1 deletions
diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs
index 3e677277826..0c7d2f7b4e5 100644
--- a/compiler/rustc_resolve/src/lib.rs
+++ b/compiler/rustc_resolve/src/lib.rs
@@ -3298,7 +3298,9 @@ impl<'a> Resolver<'a> {
             PathResult::NonModule(path_res) if path_res.unresolved_segments() == 0 => {
                 Some(path_res.base_res())
             }
-            PathResult::NonModule(..) | PathResult::Failed { .. } => None,
+            PathResult::Module(ModuleOrUniformRoot::ExternPrelude)
+            | PathResult::NonModule(..)
+            | PathResult::Failed { .. } => None,
             PathResult::Module(..) | PathResult::Indeterminate => unreachable!(),
         }
     }
diff --git a/src/test/rustdoc-ui/intra-doc/global-path.rs b/src/test/rustdoc-ui/intra-doc/global-path.rs
new file mode 100644
index 00000000000..cc7a5fa1c73
--- /dev/null
+++ b/src/test/rustdoc-ui/intra-doc/global-path.rs
@@ -0,0 +1,8 @@
+// Doc link path with empty prefix that resolves to "extern prelude" instead of a module.
+
+// check-pass
+// edition:2018
+
+/// [::Unresolved]
+//~^ WARN unresolved link to `::Unresolved`
+pub struct Item;
diff --git a/src/test/rustdoc-ui/intra-doc/global-path.stderr b/src/test/rustdoc-ui/intra-doc/global-path.stderr
new file mode 100644
index 00000000000..02379cd6cdf
--- /dev/null
+++ b/src/test/rustdoc-ui/intra-doc/global-path.stderr
@@ -0,0 +1,10 @@
+warning: unresolved link to `::Unresolved`
+  --> $DIR/global-path.rs:6:6
+   |
+LL | /// [::Unresolved]
+   |      ^^^^^^^^^^^^ no item named `` in scope
+   |
+   = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
+
+warning: 1 warning emitted
+