diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-02-20 20:37:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-20 20:37:04 +0100 |
| commit | fc0cb5d5eb58135cde86f28895e8c282bb2e77d3 (patch) | |
| tree | d9ffe6f6cc3d3aa18d273ba97df396afe93e98a8 /src | |
| parent | 77b6f96054b34ce5b608cf0b4ba479fd3837d5dd (diff) | |
| parent | 0c511c9115cc4f8eff7ad50878af032427076c4c (diff) | |
| download | rust-fc0cb5d5eb58135cde86f28895e8c282bb2e77d3.tar.gz rust-fc0cb5d5eb58135cde86f28895e8c282bb2e77d3.zip | |
Rollup merge of #82332 - GuillaumeGomez:no-src-link-on-dummy-spans, r=jyn514
Don't generate src link on dummy spans Just realized that the "auto trait impls" had `[src]` links were leading to the crate root because they were dummy spans. This PR fixes this issue. cc `@jyn514` r? `@camelid`
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/clean/types.rs | 4 | ||||
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 3 | ||||
| -rw-r--r-- | src/test/rustdoc/src-links-auto-impls.rs | 12 |
3 files changed, 19 insertions, 0 deletions
diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index 3e7196fa7fa..9a2319f6e37 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -1852,6 +1852,10 @@ impl Span { self.0 } + crate fn is_dummy(&self) -> bool { + self.0.is_dummy() + } + crate fn filename(&self, sess: &Session) -> FileName { sess.source_map().span_to_filename(self.0) } diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index f5eb92c1bb5..7ca355ed11c 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -1638,6 +1638,9 @@ impl Context<'_> { /// may happen, for example, with externally inlined items where the source /// of their crate documentation isn't known. fn src_href(&self, item: &clean::Item) -> Option<String> { + if item.source.is_dummy() { + return None; + } let mut root = self.root_path(); let mut path = String::new(); let cnum = item.source.cnum(self.sess()); diff --git a/src/test/rustdoc/src-links-auto-impls.rs b/src/test/rustdoc/src-links-auto-impls.rs new file mode 100644 index 00000000000..a1d183df0f1 --- /dev/null +++ b/src/test/rustdoc/src-links-auto-impls.rs @@ -0,0 +1,12 @@ +#![crate_name = "foo"] + +// @has foo/struct.Unsized.html +// @has - '//h3[@id="impl-Sized"]/code' 'impl !Sized for Unsized' +// @!has - '//h3[@id="impl-Sized"]/a[@class="srclink"]' '[src]' +// @has - '//h3[@id="impl-Sync"]/code' 'impl Sync for Unsized' +// @!has - '//h3[@id="impl-Sync"]/a[@class="srclink"]' '[src]' +// @has - '//h3[@id="impl-Any"]/code' 'impl<T> Any for T' +// @has - '//h3[@id="impl-Any"]/a[@class="srclink"]' '[src]' +pub struct Unsized { + data: [u8], +} |
