about summary refs log tree commit diff
path: root/src/test/rustdoc/deref-recursive-pathbuf.rs
diff options
context:
space:
mode:
authorJ. Ryan Stinnett <jryans@gmail.com>2021-01-03 13:13:30 +0000
committerJ. Ryan Stinnett <jryans@gmail.com>2021-01-08 07:15:03 +0000
commit8eaf68f92c213358dda59dc3eb648036ab62e18d (patch)
treec647188378110e5958ae64f5f4e90942215905db /src/test/rustdoc/deref-recursive-pathbuf.rs
parent06ce97c3c938c18ed392e72e535931443c1455c0 (diff)
downloadrust-8eaf68f92c213358dda59dc3eb648036ab62e18d.tar.gz
rust-8eaf68f92c213358dda59dc3eb648036ab62e18d.zip
Preserve non-local recursive `Deref` impls
This adjusts the `rustdoc` trait impl collection path to preserve `Deref` impls
from other crates. This adds a first pass to map all of the `Deref` type to
target edges and then recursively preserves all targets.
Diffstat (limited to 'src/test/rustdoc/deref-recursive-pathbuf.rs')
-rw-r--r--src/test/rustdoc/deref-recursive-pathbuf.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/rustdoc/deref-recursive-pathbuf.rs b/src/test/rustdoc/deref-recursive-pathbuf.rs
new file mode 100644
index 00000000000..759e881aab4
--- /dev/null
+++ b/src/test/rustdoc/deref-recursive-pathbuf.rs
@@ -0,0 +1,26 @@
+// ignore-tidy-linelength
+
+// #26207: Show all methods reachable via Deref impls, recursing through multiple dereferencing
+// levels and across multiple crates.
+
+// @has 'foo/struct.Foo.html'
+// @has '-' '//*[@id="deref-methods-PathBuf"]' 'Methods from Deref<Target = PathBuf>'
+// @has '-' '//*[@class="impl-items"]//*[@id="method.as_path"]' 'pub fn as_path(&self)'
+// @has '-' '//*[@id="deref-methods-Path"]' 'Methods from Deref<Target = Path>'
+// @has '-' '//*[@class="impl-items"]//*[@id="method.exists"]' 'pub fn exists(&self)'
+// @has '-' '//*[@class="sidebar-title"][@href="#deref-methods-PathBuf"]' 'Methods from Deref<Target=PathBuf>'
+// @has '-' '//*[@class="sidebar-links"]/a[@href="#method.as_path"]' 'as_path'
+// @has '-' '//*[@class="sidebar-title"][@href="#deref-methods-Path"]' 'Methods from Deref<Target=Path>'
+// @has '-' '//*[@class="sidebar-links"]/a[@href="#method.exists"]' 'exists'
+
+#![crate_name = "foo"]
+
+use std::ops::Deref;
+use std::path::PathBuf;
+
+pub struct Foo(PathBuf);
+
+impl Deref for Foo {
+    type Target = PathBuf;
+    fn deref(&self) -> &PathBuf { &self.0 }
+}