about summary refs log tree commit diff
path: root/src/test/rustdoc
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-01-30 00:04:15 +0100
committerGitHub <noreply@github.com>2022-01-30 00:04:15 +0100
commit605ffd6113dc49a9b10ea2b5aa6ca41a275bb9ad (patch)
tree3cd698034f471c7dda9cb4e746684b6c41e17e64 /src/test/rustdoc
parent329753e24867a5dd8a3c0467e220ef28878d118c (diff)
parent3903ca197e55f209b2415e566b4b8f407f6fe899 (diff)
downloadrust-605ffd6113dc49a9b10ea2b5aa6ca41a275bb9ad.tar.gz
rust-605ffd6113dc49a9b10ea2b5aa6ca41a275bb9ad.zip
Rollup merge of #93441 - notriddle:notriddle/collect-crate-doc-links-very-early, r=petrochenkov
rustdoc: load the set of in-scope traits for modules with no docstring

Fixes #93428

This fix is a response to a couple of special cases related to the `module_id`, which is eventually used for trait candidates:

  * The module id is always set to the current crate, when checking `crate::`.

    Normally, the set of in-scope traits would be set in `load_links_in_attrs`, but if there are no doc comments, then that loop will never run.

  * the module id is set to the parent module, when resolving a module that is spelled like this:

        // Notice how we use an outlined doc comment here!
        // [`Test::my_fn`]
        mod something {
        }

    As with the above problem with `crate::`, we need to make sure the module gets its traits in scope resolved, even if it has no doc comments of its own.
Diffstat (limited to 'src/test/rustdoc')
-rw-r--r--src/test/rustdoc/intra-doc/crate-relative.rs13
-rw-r--r--src/test/rustdoc/intra-doc/mod-relative.rs17
2 files changed, 30 insertions, 0 deletions
diff --git a/src/test/rustdoc/intra-doc/crate-relative.rs b/src/test/rustdoc/intra-doc/crate-relative.rs
new file mode 100644
index 00000000000..bacbcabfc60
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/crate-relative.rs
@@ -0,0 +1,13 @@
+pub struct Test<'a> {
+    data: &'a (),
+}
+
+impl<'a> Test<'a> {
+    pub fn do_test(&self) {}
+}
+
+// @has crate_relative/demo/index.html
+// @has - '//a/@href' '../struct.Test.html#method.do_test'
+pub mod demo {
+    //! [`crate::Test::do_test`]
+}
diff --git a/src/test/rustdoc/intra-doc/mod-relative.rs b/src/test/rustdoc/intra-doc/mod-relative.rs
new file mode 100644
index 00000000000..49d3399b972
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/mod-relative.rs
@@ -0,0 +1,17 @@
+pub mod wrapper {
+
+    pub struct Test<'a> {
+        data: &'a (),
+    }
+
+    impl<'a> Test<'a> {
+        pub fn do_test(&self) {}
+    }
+
+    // @has mod_relative/wrapper/demo/index.html
+    // @has - '//a/@href' '../struct.Test.html#method.do_test'
+    /// [`Test::do_test`]
+    pub mod demo {
+    }
+
+}