From 30716855056045650e88a98e9d6240ef33c33758 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sat, 20 Feb 2021 15:05:50 +0100 Subject: [PATCH 1/2] Don't render [src] link on dummy spans --- src/librustdoc/clean/types.rs | 4 ++++ src/librustdoc/html/render/mod.rs | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index 3e7196fa7fa03..9a2319f6e379d 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 f5eb92c1bb5aa..7ca355ed11cc7 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 { + 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()); From 0c511c9115cc4f8eff7ad50878af032427076c4c Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sat, 20 Feb 2021 15:06:20 +0100 Subject: [PATCH 2/2] Add test for no src links on dummy spans --- src/test/rustdoc/src-links-auto-impls.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/test/rustdoc/src-links-auto-impls.rs 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 0000000000000..a1d183df0f1f2 --- /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 Any for T' +// @has - '//h3[@id="impl-Any"]/a[@class="srclink"]' '[src]' +pub struct Unsized { + data: [u8], +}