diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2020-09-08 00:07:40 -0400 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2020-11-29 13:40:08 -0500 |
| commit | 6ab1f05697c3f2df4e439a05ebcee479a9a16d80 (patch) | |
| tree | 8984ae64a2a5a81da8a7d102a43b4b933abfe4cc /src/test | |
| parent | e37f25aa3f356546ab851e394d5598fc575eabda (diff) | |
| download | rust-6ab1f05697c3f2df4e439a05ebcee479a9a16d80.tar.gz rust-6ab1f05697c3f2df4e439a05ebcee479a9a16d80.zip | |
Fix intra-doc links for `Self` on primitives
- Remove the difference between `parent_item` and `current_item`; these should never have been different. - Remove `current_item` from `resolve` and `variant_field` so that `Self` is only substituted in one place at the very start. - Resolve the current item as a `DefId`, not a `HirId`. This is what actually fixed the bug. Hacks: - `clean` uses `TypedefItem` when it _really_ should be `AssociatedTypeItem`. I tried fixing this without success and hacked around it instead (see comments) - This stringifies DefIds, then resolves them a second time. This is really silly and rustdoc should just use DefIds throughout. Fixing this is a larger task than I want to take on right now.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/rustdoc/intra-link-prim-self.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/rustdoc/intra-link-prim-self.rs b/src/test/rustdoc/intra-link-prim-self.rs new file mode 100644 index 00000000000..1189d266c53 --- /dev/null +++ b/src/test/rustdoc/intra-link-prim-self.rs @@ -0,0 +1,36 @@ +// ignore-tidy-linelength +#![deny(broken_intra_doc_links)] +#![feature(lang_items)] +#![feature(no_core)] +#![no_core] + +#[lang = "usize"] +/// [Self::f] +/// [Self::MAX] +// @has intra_link_prim_self/primitive.usize.html +// @has - '//a[@href="https://doc.rust-lang.org/nightly/std/primitive.usize.html#method.f"]' 'Self::f' +// @has - '//a[@href="https://doc.rust-lang.org/nightly/std/primitive.usize.html#associatedconstant.MAX"]' 'Self::MAX' +impl usize { + /// Some docs + pub fn f() {} + + /// 10 and 2^32 are basically the same. + pub const MAX: usize = 10; + + // FIXME(#8995) uncomment this when associated types in inherent impls are supported + // @ has - '//a[@href="https://doc.rust-lang.org/nightly/std/primitive.usize.html#associatedtype.ME"]' 'Self::ME' + // / [Self::ME] + //pub type ME = usize; +} + +#[doc(primitive = "usize")] +/// This has some docs. +mod usize {} + +/// [S::f] +/// [Self::f] +pub struct S; + +impl S { + pub fn f() {} +} |
