about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Nelson <jyn514@gmail.com>2020-11-28 20:25:41 -0500
committerJoshua Nelson <jyn514@gmail.com>2020-11-28 21:13:55 -0500
commitddfb581fb9e04595bc7cdb9d66792fdfdbec67ed (patch)
treeecf43b905627276e664d79d7ab93bba72f899fad
parente37f25aa3f356546ab851e394d5598fc575eabda (diff)
downloadrust-ddfb581fb9e04595bc7cdb9d66792fdfdbec67ed.tar.gz
rust-ddfb581fb9e04595bc7cdb9d66792fdfdbec67ed.zip
Move `src/test/rustdoc` intra-doc link tests into a subdirectory
They were starting to get unwieldy.
-rw-r--r--src/test/rustdoc/intra-doc-link-mod-ambiguity.rs18
-rw-r--r--src/test/rustdoc/intra-doc/anchors.rs (renamed from src/test/rustdoc/intra-links-anchors.rs)4
-rw-r--r--src/test/rustdoc/intra-doc/associated-defaults.rs27
-rw-r--r--src/test/rustdoc/intra-doc/associated-items.rs61
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs (renamed from src/test/rustdoc/auxiliary/intra-link-extern-crate.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs (renamed from src/test/rustdoc/auxiliary/intra-link-pub-use.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs (renamed from src/test/rustdoc/auxiliary/intra-link-reexport-additional-docs.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs (renamed from src/test/rustdoc/auxiliary/intra-links-external-traits.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/my-core.rs (renamed from src/test/rustdoc/auxiliary/my-core.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs (renamed from src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs)1
-rw-r--r--src/test/rustdoc/intra-doc/auxiliary/through-proc-macro-aux.rs (renamed from src/test/rustdoc/auxiliary/through-proc-macro-aux.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/basic.rs (renamed from src/test/rustdoc/intra-links.rs)46
-rw-r--r--src/test/rustdoc/intra-doc/builtin-macros.rs (renamed from src/test/rustdoc/intra-link-builtin-macros.rs)2
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/additional_doc.rs (renamed from src/test/rustdoc/intra-doc-crate/additional_doc.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/additional_doc.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/intra-doc-basic.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs (renamed from src/test/rustdoc/auxiliary/intra-link-cross-crate-crate.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/macro_inner.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/module.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/module.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/proc_macro.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/submodule-inner.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/submodule-outer.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs (renamed from src/test/rustdoc/intra-doc-crate/auxiliary/traits.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/basic.rs (renamed from src/test/rustdoc/intra-doc-crate/basic.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/crate.rs (renamed from src/test/rustdoc/intra-link-cross-crate-crate.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/hidden.rs (renamed from src/test/rustdoc/intra-doc-crate/hidden.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/macro.rs (renamed from src/test/rustdoc/intra-doc-crate/macro.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/module.rs (renamed from src/test/rustdoc/intra-doc-crate/module.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/submodule-inner.rs (renamed from src/test/rustdoc/intra-doc-crate/submodule-inner.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/submodule-outer.rs (renamed from src/test/rustdoc/intra-doc-crate/submodule-outer.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/cross-crate/traits.rs (renamed from src/test/rustdoc/intra-doc-crate/traits.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/disambiguators-removed.rs51
-rw-r--r--src/test/rustdoc/intra-doc/enum-struct-field.rs (renamed from src/test/rustdoc/intra-doc-link-enum-struct-field.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/extern-crate.rs (renamed from src/test/rustdoc/intra-link-extern-crate.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/extern-type.rs17
-rw-r--r--src/test/rustdoc/intra-doc/external-traits.rs (renamed from src/test/rustdoc/intra-links-external-traits.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/generic-params.rs (renamed from src/test/rustdoc/intra-doc-link-generic-params.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/in-bodies.rs (renamed from src/test/rustdoc/intra-link-in-bodies.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/libstd-re-export.rs (renamed from src/test/rustdoc/intra-link-libstd-re-export.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/mod-ambiguity.rs16
-rw-r--r--src/test/rustdoc/intra-doc/prim-assoc.rs5
-rw-r--r--src/test/rustdoc/intra-doc/prim-methods-external-core.rs (renamed from src/test/rustdoc/intra-link-prim-methods-external-core.rs)2
-rw-r--r--src/test/rustdoc/intra-doc/prim-methods-local.rs (renamed from src/test/rustdoc/intra-link-prim-methods-local.rs)2
-rw-r--r--src/test/rustdoc/intra-doc/prim-methods.rs (renamed from src/test/rustdoc/intra-link-prim-methods.rs)2
-rw-r--r--src/test/rustdoc/intra-doc/prim-precedence.rs17
-rw-r--r--src/test/rustdoc/intra-doc/primitive-non-default-impl.rs (renamed from src/test/rustdoc/intra-link-primitive-non-default-impl.rs)6
-rw-r--r--src/test/rustdoc/intra-doc/private-failures-ignored.rs (renamed from src/test/rustdoc/intra-link-private.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/private.rs (renamed from src/test/rustdoc/intra-doc-link-private.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/proc-macro.rs27
-rw-r--r--src/test/rustdoc/intra-doc/pub-use.rs (renamed from src/test/rustdoc/intra-link-pub-use.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/reexport-additional-docs.rs (renamed from src/test/rustdoc/intra-link-reexport-additional-docs.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/self.rs (renamed from src/test/rustdoc/intra-link-self.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/through-proc-macro.rs (renamed from src/test/rustdoc/through-proc-macro.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/trait-impl.rs (renamed from src/test/rustdoc/intra-link-trait-impl.rs)0
-rw-r--r--src/test/rustdoc/intra-doc/trait-item.rs (renamed from src/test/rustdoc/intra-link-trait-item.rs)2
-rw-r--r--src/test/rustdoc/intra-doc/true-false.rs (renamed from src/test/rustdoc/intra-doc-link-true-false.rs)0
-rw-r--r--src/test/rustdoc/intra-link-associated-defaults.rs27
-rw-r--r--src/test/rustdoc/intra-link-associated-items.rs61
-rw-r--r--src/test/rustdoc/intra-link-disambiguators-removed.rs51
-rw-r--r--src/test/rustdoc/intra-link-extern-type.rs18
-rw-r--r--src/test/rustdoc/intra-link-prim-assoc.rs5
-rw-r--r--src/test/rustdoc/intra-link-prim-precedence.rs17
-rw-r--r--src/test/rustdoc/intra-link-proc-macro.rs27
64 files changed, 254 insertions, 258 deletions
diff --git a/src/test/rustdoc/intra-doc-link-mod-ambiguity.rs b/src/test/rustdoc/intra-doc-link-mod-ambiguity.rs
deleted file mode 100644
index bd733e10230..00000000000
--- a/src/test/rustdoc/intra-doc-link-mod-ambiguity.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// ignore-tidy-linelength
-
-#![deny(broken_intra_doc_links)]
-
-
-pub fn foo() {
-
-}
-
-pub mod foo {}
-// @has intra_doc_link_mod_ambiguity/struct.A.html '//a/@href' '../intra_doc_link_mod_ambiguity/foo/index.html'
-/// Module is [`module@foo`]
-pub struct A;
-
-
-// @has intra_doc_link_mod_ambiguity/struct.B.html '//a/@href' '../intra_doc_link_mod_ambiguity/fn.foo.html'
-/// Function is [`fn@foo`]
-pub struct B;
diff --git a/src/test/rustdoc/intra-links-anchors.rs b/src/test/rustdoc/intra-doc/anchors.rs
index f554e16b4f4..e4f0c737bdd 100644
--- a/src/test/rustdoc/intra-links-anchors.rs
+++ b/src/test/rustdoc/intra-doc/anchors.rs
@@ -3,8 +3,8 @@
 /// # Anchor!
 pub struct Something;
 
-// @has intra_links_anchors/struct.SomeOtherType.html
-// @has - '//a/@href' '../intra_links_anchors/struct.Something.html#Anchor!'
+// @has anchors/struct.SomeOtherType.html
+// @has - '//a/@href' '../anchors/struct.Something.html#Anchor!'
 
 /// I want...
 ///
diff --git a/src/test/rustdoc/intra-doc/associated-defaults.rs b/src/test/rustdoc/intra-doc/associated-defaults.rs
new file mode 100644
index 00000000000..f99d9b5baea
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/associated-defaults.rs
@@ -0,0 +1,27 @@
+// ignore-tidy-linelength
+#![deny(intra_doc_link_resolution_failure)]
+#![feature(associated_type_defaults)]
+
+pub trait TraitWithDefault {
+    type T = usize;
+    fn f() -> Self::T {
+        0
+    }
+}
+
+/// Link to [UsesDefaults::T] and [UsesDefaults::f]
+// @has 'associated_defaults/struct.UsesDefaults.html' '//a[@href="../associated_defaults/struct.UsesDefaults.html#associatedtype.T"]' 'UsesDefaults::T'
+// @has 'associated_defaults/struct.UsesDefaults.html' '//a[@href="../associated_defaults/struct.UsesDefaults.html#method.f"]' 'UsesDefaults::f'
+pub struct UsesDefaults;
+impl TraitWithDefault for UsesDefaults {}
+
+/// Link to [OverridesDefaults::T] and [OverridesDefaults::f]
+// @has 'associated_defaults/struct.OverridesDefaults.html' '//a[@href="../associated_defaults/struct.OverridesDefaults.html#associatedtype.T"]' 'OverridesDefaults::T'
+// @has 'associated_defaults/struct.OverridesDefaults.html' '//a[@href="../associated_defaults/struct.OverridesDefaults.html#method.f"]' 'OverridesDefaults::f'
+pub struct OverridesDefaults;
+impl TraitWithDefault for OverridesDefaults {
+    type T = bool;
+    fn f() -> bool {
+        true
+    }
+}
diff --git a/src/test/rustdoc/intra-doc/associated-items.rs b/src/test/rustdoc/intra-doc/associated-items.rs
new file mode 100644
index 00000000000..09dfbfcf68a
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/associated-items.rs
@@ -0,0 +1,61 @@
+// ignore-tidy-linelength
+#![deny(intra_doc_link_resolution_failure)]
+
+/// [`std::collections::BTreeMap::into_iter`]
+/// [`String::from`] is ambiguous as to which `From` impl
+/// [Vec::into_iter()] uses a disambiguator
+// @has 'associated_items/fn.foo.html' '//a[@href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#method.into_iter"]' 'std::collections::BTreeMap::into_iter'
+// @has 'associated_items/fn.foo.html' '//a[@href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from"]' 'String::from'
+// @has 'associated_items/fn.foo.html' '//a[@href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html#method.into_iter"]' 'Vec::into_iter'
+pub fn foo() {}
+
+/// Link to [MyStruct], [link from struct][MyStruct::method], [MyStruct::clone], [MyStruct::Input]
+// @has 'associated_items/struct.MyStruct.html' '//a[@href="../associated_items/struct.MyStruct.html"]' 'MyStruct'
+// @has 'associated_items/struct.MyStruct.html' '//a[@href="../associated_items/struct.MyStruct.html#method.method"]' 'link from struct'
+// @has 'associated_items/struct.MyStruct.html' '//a[@href="../associated_items/struct.MyStruct.html#method.clone"]' 'MyStruct::clone'
+// @has 'associated_items/struct.MyStruct.html' '//a[@href="../associated_items/struct.MyStruct.html#associatedtype.Input"]' 'MyStruct::Input'
+pub struct MyStruct { foo: () }
+
+impl Clone for MyStruct {
+    fn clone(&self) -> Self {
+        MyStruct
+    }
+}
+
+pub trait T {
+    type Input;
+    fn method(i: Self::Input);
+}
+
+impl T for MyStruct {
+    type Input = usize;
+
+    /// [link from method][MyStruct::method] on method
+    // @has 'associated_items/struct.MyStruct.html' '//a[@href="../associated_items/struct.MyStruct.html#method.method"]' 'link from method'
+    fn method(i: usize) {
+    }
+}
+
+/// Ambiguity between which trait to use
+pub trait T1 {
+    fn ambiguous_method();
+}
+
+pub trait T2 {
+    fn ambiguous_method();
+}
+
+/// Link to [S::ambiguous_method]
+// FIXME: there is no way to disambiguate these.
+// Since we have `#[deny(intra_doc_failure)]`, we still know it was one or the other.
+pub struct S;
+
+impl T1 for S {
+    fn ambiguous_method() {}
+}
+
+impl T2 for S {
+    fn ambiguous_method() {}
+}
+
+fn main() {}
diff --git a/src/test/rustdoc/auxiliary/intra-link-extern-crate.rs b/src/test/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs
index db3bb38ada0..db3bb38ada0 100644
--- a/src/test/rustdoc/auxiliary/intra-link-extern-crate.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/intra-link-extern-crate.rs
diff --git a/src/test/rustdoc/auxiliary/intra-link-pub-use.rs b/src/test/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs
index a4db2ffc445..a4db2ffc445 100644
--- a/src/test/rustdoc/auxiliary/intra-link-pub-use.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/intra-link-pub-use.rs
diff --git a/src/test/rustdoc/auxiliary/intra-link-reexport-additional-docs.rs b/src/test/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs
index fc51995a94e..fc51995a94e 100644
--- a/src/test/rustdoc/auxiliary/intra-link-reexport-additional-docs.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/intra-link-reexport-additional-docs.rs
diff --git a/src/test/rustdoc/auxiliary/intra-links-external-traits.rs b/src/test/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs
index 6142dcda986..6142dcda986 100644
--- a/src/test/rustdoc/auxiliary/intra-links-external-traits.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/intra-links-external-traits.rs
diff --git a/src/test/rustdoc/auxiliary/my-core.rs b/src/test/rustdoc/intra-doc/auxiliary/my-core.rs
index 54e986be9ec..54e986be9ec 100644
--- a/src/test/rustdoc/auxiliary/my-core.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/my-core.rs
diff --git a/src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs b/src/test/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs
index 04a431d9902..5ba132f25b4 100644
--- a/src/test/rustdoc/auxiliary/intra-link-proc-macro-macro.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/proc-macro-macro.rs
@@ -3,7 +3,6 @@
 // compile-flags: --crate-type proc-macro
 
 #![crate_type="proc-macro"]
-#![crate_name="intra_link_proc_macro_macro"]
 
 extern crate proc_macro;
 
diff --git a/src/test/rustdoc/auxiliary/through-proc-macro-aux.rs b/src/test/rustdoc/intra-doc/auxiliary/through-proc-macro-aux.rs
index 5c4a01ee3a7..5c4a01ee3a7 100644
--- a/src/test/rustdoc/auxiliary/through-proc-macro-aux.rs
+++ b/src/test/rustdoc/intra-doc/auxiliary/through-proc-macro-aux.rs
diff --git a/src/test/rustdoc/intra-links.rs b/src/test/rustdoc/intra-doc/basic.rs
index 751c10925c0..7760546e1fa 100644
--- a/src/test/rustdoc/intra-links.rs
+++ b/src/test/rustdoc/intra-doc/basic.rs
@@ -1,21 +1,21 @@
-// @has intra_links/index.html
-// @has - '//a/@href' '../intra_links/struct.ThisType.html'
-// @has - '//a/@href' '../intra_links/struct.ThisType.html#method.this_method'
-// @has - '//a/@href' '../intra_links/enum.ThisEnum.html'
-// @has - '//a/@href' '../intra_links/enum.ThisEnum.html#variant.ThisVariant'
-// @has - '//a/@href' '../intra_links/trait.ThisTrait.html'
-// @has - '//a/@href' '../intra_links/trait.ThisTrait.html#tymethod.this_associated_method'
-// @has - '//a/@href' '../intra_links/trait.ThisTrait.html#associatedtype.ThisAssociatedType'
-// @has - '//a/@href' '../intra_links/trait.ThisTrait.html#associatedconstant.THIS_ASSOCIATED_CONST'
-// @has - '//a/@href' '../intra_links/trait.ThisTrait.html'
-// @has - '//a/@href' '../intra_links/type.ThisAlias.html'
-// @has - '//a/@href' '../intra_links/union.ThisUnion.html'
-// @has - '//a/@href' '../intra_links/fn.this_function.html'
-// @has - '//a/@href' '../intra_links/constant.THIS_CONST.html'
-// @has - '//a/@href' '../intra_links/static.THIS_STATIC.html'
-// @has - '//a/@href' '../intra_links/macro.this_macro.html'
-// @has - '//a/@href' '../intra_links/trait.SoAmbiguous.html'
-// @has - '//a/@href' '../intra_links/fn.SoAmbiguous.html'
+// @has basic/index.html
+// @has - '//a/@href' '../basic/struct.ThisType.html'
+// @has - '//a/@href' '../basic/struct.ThisType.html#method.this_method'
+// @has - '//a/@href' '../basic/enum.ThisEnum.html'
+// @has - '//a/@href' '../basic/enum.ThisEnum.html#variant.ThisVariant'
+// @has - '//a/@href' '../basic/trait.ThisTrait.html'
+// @has - '//a/@href' '../basic/trait.ThisTrait.html#tymethod.this_associated_method'
+// @has - '//a/@href' '../basic/trait.ThisTrait.html#associatedtype.ThisAssociatedType'
+// @has - '//a/@href' '../basic/trait.ThisTrait.html#associatedconstant.THIS_ASSOCIATED_CONST'
+// @has - '//a/@href' '../basic/trait.ThisTrait.html'
+// @has - '//a/@href' '../basic/type.ThisAlias.html'
+// @has - '//a/@href' '../basic/union.ThisUnion.html'
+// @has - '//a/@href' '../basic/fn.this_function.html'
+// @has - '//a/@href' '../basic/constant.THIS_CONST.html'
+// @has - '//a/@href' '../basic/static.THIS_STATIC.html'
+// @has - '//a/@href' '../basic/macro.this_macro.html'
+// @has - '//a/@href' '../basic/trait.SoAmbiguous.html'
+// @has - '//a/@href' '../basic/fn.SoAmbiguous.html'
 //! In this crate we would like to link to:
 //!
 //! * [`ThisType`](ThisType)
@@ -46,7 +46,7 @@ macro_rules! this_macro {
     () => {};
 }
 
-// @has intra_links/struct.ThisType.html '//a/@href' '../intra_links/macro.this_macro.html'
+// @has basic/struct.ThisType.html '//a/@href' '../basic/macro.this_macro.html'
 /// another link to [`this_macro!()`]
 pub struct ThisType;
 
@@ -72,10 +72,10 @@ pub trait SoAmbiguous {}
 pub fn SoAmbiguous() {}
 
 
-// @has intra_links/struct.SomeOtherType.html '//a/@href' '../intra_links/struct.ThisType.html'
-// @has - '//a/@href' '../intra_links/struct.ThisType.html#method.this_method'
-// @has - '//a/@href' '../intra_links/enum.ThisEnum.html'
-// @has - '//a/@href' '../intra_links/enum.ThisEnum.html#variant.ThisVariant'
+// @has basic/struct.SomeOtherType.html '//a/@href' '../basic/struct.ThisType.html'
+// @has - '//a/@href' '../basic/struct.ThisType.html#method.this_method'
+// @has - '//a/@href' '../basic/enum.ThisEnum.html'
+// @has - '//a/@href' '../basic/enum.ThisEnum.html#variant.ThisVariant'
 /// Shortcut links for:
 /// * [`ThisType`]
 /// * [`ThisType::this_method`]
diff --git a/src/test/rustdoc/intra-link-builtin-macros.rs b/src/test/rustdoc/intra-doc/builtin-macros.rs
index 4d40eb3b88f..74216a587e1 100644
--- a/src/test/rustdoc/intra-link-builtin-macros.rs
+++ b/src/test/rustdoc/intra-doc/builtin-macros.rs
@@ -1,3 +1,3 @@
-// @has intra_link_builtin_macros/index.html
+// @has builtin_macros/index.html
 // @has - '//a/@href' 'https://doc.rust-lang.org/nightly/core/macro.cfg.html'
 //! [cfg]
diff --git a/src/test/rustdoc/intra-doc-crate/additional_doc.rs b/src/test/rustdoc/intra-doc/cross-crate/additional_doc.rs
index 837390b3c71..837390b3c71 100644
--- a/src/test/rustdoc/intra-doc-crate/additional_doc.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/additional_doc.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/additional_doc.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs
index 849d2568733..849d2568733 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/additional_doc.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/additional_doc.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs
index b543ae764c0..b543ae764c0 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/hidden.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/intra-doc-basic.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs
index 5342baecbc4..5342baecbc4 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/intra-doc-basic.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-doc-basic.rs
diff --git a/src/test/rustdoc/auxiliary/intra-link-cross-crate-crate.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs
index a37848e23d9..a37848e23d9 100644
--- a/src/test/rustdoc/auxiliary/intra-link-cross-crate-crate.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/intra-link-cross-crate-crate.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/macro_inner.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs
index a94f9e5dcca..a94f9e5dcca 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/macro_inner.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/macro_inner.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/module.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/module.rs
index b7e3913f108..b7e3913f108 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/module.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/module.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/proc_macro.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs
index 0d5a954075d..0d5a954075d 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/proc_macro.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/proc_macro.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/submodule-inner.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs
index 8ae0f6c16b3..8ae0f6c16b3 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/submodule-inner.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-inner.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/submodule-outer.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs
index d90c529e385..d90c529e385 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/submodule-outer.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/submodule-outer.rs
diff --git a/src/test/rustdoc/intra-doc-crate/auxiliary/traits.rs b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs
index c16e39d56f3..c16e39d56f3 100644
--- a/src/test/rustdoc/intra-doc-crate/auxiliary/traits.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/auxiliary/traits.rs
diff --git a/src/test/rustdoc/intra-doc-crate/basic.rs b/src/test/rustdoc/intra-doc/cross-crate/basic.rs
index 6ab9140c3c3..6ab9140c3c3 100644
--- a/src/test/rustdoc/intra-doc-crate/basic.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/basic.rs
diff --git a/src/test/rustdoc/intra-link-cross-crate-crate.rs b/src/test/rustdoc/intra-doc/cross-crate/crate.rs
index edf544708b6..edf544708b6 100644
--- a/src/test/rustdoc/intra-link-cross-crate-crate.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/crate.rs
diff --git a/src/test/rustdoc/intra-doc-crate/hidden.rs b/src/test/rustdoc/intra-doc/cross-crate/hidden.rs
index 9c9d4c64945..9c9d4c64945 100644
--- a/src/test/rustdoc/intra-doc-crate/hidden.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/hidden.rs
diff --git a/src/test/rustdoc/intra-doc-crate/macro.rs b/src/test/rustdoc/intra-doc/cross-crate/macro.rs
index 311b16dff13..311b16dff13 100644
--- a/src/test/rustdoc/intra-doc-crate/macro.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/macro.rs
diff --git a/src/test/rustdoc/intra-doc-crate/module.rs b/src/test/rustdoc/intra-doc/cross-crate/module.rs
index 9039e344f7b..9039e344f7b 100644
--- a/src/test/rustdoc/intra-doc-crate/module.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/module.rs
diff --git a/src/test/rustdoc/intra-doc-crate/submodule-inner.rs b/src/test/rustdoc/intra-doc/cross-crate/submodule-inner.rs
index e1465816368..e1465816368 100644
--- a/src/test/rustdoc/intra-doc-crate/submodule-inner.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/submodule-inner.rs
diff --git a/src/test/rustdoc/intra-doc-crate/submodule-outer.rs b/src/test/rustdoc/intra-doc/cross-crate/submodule-outer.rs
index 45f561328f2..45f561328f2 100644
--- a/src/test/rustdoc/intra-doc-crate/submodule-outer.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/submodule-outer.rs
diff --git a/src/test/rustdoc/intra-doc-crate/traits.rs b/src/test/rustdoc/intra-doc/cross-crate/traits.rs
index 07decb48019..07decb48019 100644
--- a/src/test/rustdoc/intra-doc-crate/traits.rs
+++ b/src/test/rustdoc/intra-doc/cross-crate/traits.rs
diff --git a/src/test/rustdoc/intra-doc/disambiguators-removed.rs b/src/test/rustdoc/intra-doc/disambiguators-removed.rs
new file mode 100644
index 00000000000..aa0ced62aaf
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/disambiguators-removed.rs
@@ -0,0 +1,51 @@
+// ignore-tidy-linelength
+#![deny(intra_doc_link_resolution_failure)]
+// first try backticks
+/// Trait: [`trait@Name`], fn: [`fn@Name`], [`Name`][`macro@Name`]
+// @has disambiguators_removed/struct.AtDisambiguator.html
+// @has - '//a[@href="../disambiguators_removed/trait.Name.html"][code]' "Name"
+// @has - '//a[@href="../disambiguators_removed/fn.Name.html"][code]' "Name"
+// @has - '//a[@href="../disambiguators_removed/macro.Name.html"][code]' "Name"
+pub struct AtDisambiguator;
+
+/// fn: [`Name()`], macro: [`Name!`]
+// @has disambiguators_removed/struct.SymbolDisambiguator.html
+// @has - '//a[@href="../disambiguators_removed/fn.Name.html"][code]' "Name()"
+// @has - '//a[@href="../disambiguators_removed/macro.Name.html"][code]' "Name!"
+pub struct SymbolDisambiguator;
+
+// Now make sure that backticks aren't added if they weren't already there
+/// [fn@Name]
+// @has disambiguators_removed/trait.Name.html
+// @has - '//a[@href="../disambiguators_removed/fn.Name.html"]' "Name"
+// @!has - '//a[@href="../disambiguators_removed/fn.Name.html"][code]' "Name"
+
+// FIXME: this will turn !() into ! alone
+/// [Name!()]
+// @has - '//a[@href="../disambiguators_removed/macro.Name.html"]' "Name!"
+pub trait Name {}
+
+#[allow(non_snake_case)]
+
+// Try collapsed reference links
+/// [macro@Name][]
+// @has disambiguators_removed/fn.Name.html
+// @has - '//a[@href="../disambiguators_removed/macro.Name.html"]' "Name"
+
+// Try links that have the same text as a generated URL
+/// Weird URL aligned [../disambiguators_removed/macro.Name.html][trait@Name]
+// @has - '//a[@href="../disambiguators_removed/trait.Name.html"]' "../disambiguators_removed/macro.Name.html"
+pub fn Name() {}
+
+#[macro_export]
+// Rustdoc doesn't currently handle links that have weird interspersing of inline code blocks.
+/// [fn@Na`m`e]
+// @has disambiguators_removed/macro.Name.html
+// @has - '//a[@href="../disambiguators_removed/fn.Name.html"]' "fn@Name"
+
+// It also doesn't handle any case where the code block isn't the whole link text:
+/// [trait@`Name`]
+// @has - '//a[@href="../disambiguators_removed/trait.Name.html"]' "trait@Name"
+macro_rules! Name {
+    () => ()
+}
diff --git a/src/test/rustdoc/intra-doc-link-enum-struct-field.rs b/src/test/rustdoc/intra-doc/enum-struct-field.rs
index 70bf343a9a5..70bf343a9a5 100644
--- a/src/test/rustdoc/intra-doc-link-enum-struct-field.rs
+++ b/src/test/rustdoc/intra-doc/enum-struct-field.rs
diff --git a/src/test/rustdoc/intra-link-extern-crate.rs b/src/test/rustdoc/intra-doc/extern-crate.rs
index 193bca704bf..193bca704bf 100644
--- a/src/test/rustdoc/intra-link-extern-crate.rs
+++ b/src/test/rustdoc/intra-doc/extern-crate.rs
diff --git a/src/test/rustdoc/intra-doc/extern-type.rs b/src/test/rustdoc/intra-doc/extern-type.rs
new file mode 100644
index 00000000000..e1934698d1f
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/extern-type.rs
@@ -0,0 +1,17 @@
+#![feature(extern_types)]
+
+extern {
+    pub type ExternType;
+}
+
+impl ExternType {
+    pub fn f(&self) {
+
+    }
+}
+
+// @has 'extern_type/foreigntype.ExternType.html'
+// @has 'extern_type/fn.links_to_extern_type.html' \
+// 'href="../extern_type/foreigntype.ExternType.html#method.f"'
+/// See also [ExternType::f]
+pub fn links_to_extern_type() {}
diff --git a/src/test/rustdoc/intra-links-external-traits.rs b/src/test/rustdoc/intra-doc/external-traits.rs
index de76f29476c..de76f29476c 100644
--- a/src/test/rustdoc/intra-links-external-traits.rs
+++ b/src/test/rustdoc/intra-doc/external-traits.rs
diff --git a/src/test/rustdoc/intra-doc-link-generic-params.rs b/src/test/rustdoc/intra-doc/generic-params.rs
index 1de6410f10c..1de6410f10c 100644
--- a/src/test/rustdoc/intra-doc-link-generic-params.rs
+++ b/src/test/rustdoc/intra-doc/generic-params.rs
diff --git a/src/test/rustdoc/intra-link-in-bodies.rs b/src/test/rustdoc/intra-doc/in-bodies.rs
index ec965a99dc2..ec965a99dc2 100644
--- a/src/test/rustdoc/intra-link-in-bodies.rs
+++ b/src/test/rustdoc/intra-doc/in-bodies.rs
diff --git a/src/test/rustdoc/intra-link-libstd-re-export.rs b/src/test/rustdoc/intra-doc/libstd-re-export.rs
index d0af3aec660..d0af3aec660 100644
--- a/src/test/rustdoc/intra-link-libstd-re-export.rs
+++ b/src/test/rustdoc/intra-doc/libstd-re-export.rs
diff --git a/src/test/rustdoc/intra-doc/mod-ambiguity.rs b/src/test/rustdoc/intra-doc/mod-ambiguity.rs
new file mode 100644
index 00000000000..feb013b22be
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/mod-ambiguity.rs
@@ -0,0 +1,16 @@
+#![deny(broken_intra_doc_links)]
+
+
+pub fn foo() {
+
+}
+
+pub mod foo {}
+// @has mod_ambiguity/struct.A.html '//a/@href' '../mod_ambiguity/foo/index.html'
+/// Module is [`module@foo`]
+pub struct A;
+
+
+// @has mod_ambiguity/struct.B.html '//a/@href' '../mod_ambiguity/fn.foo.html'
+/// Function is [`fn@foo`]
+pub struct B;
diff --git a/src/test/rustdoc/intra-doc/prim-assoc.rs b/src/test/rustdoc/intra-doc/prim-assoc.rs
new file mode 100644
index 00000000000..d687cbd69bb
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/prim-assoc.rs
@@ -0,0 +1,5 @@
+// ignore-tidy-linelength
+#![deny(broken_intra_doc_links)]
+
+//! [i32::MAX]
+// @has prim_assoc/index.html '//a[@href="https://doc.rust-lang.org/nightly/std/primitive.i32.html#associatedconstant.MAX"]' "i32::MAX"
diff --git a/src/test/rustdoc/intra-link-prim-methods-external-core.rs b/src/test/rustdoc/intra-doc/prim-methods-external-core.rs
index c8ef4c01599..434e0338983 100644
--- a/src/test/rustdoc/intra-link-prim-methods-external-core.rs
+++ b/src/test/rustdoc/intra-doc/prim-methods-external-core.rs
@@ -9,7 +9,7 @@
 #![no_core]
 #![crate_type = "rlib"]
 
-// @has intra_link_prim_methods_external_core/index.html
+// @has prim_methods_external_core/index.html
 // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char'
 // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8"]' 'char::len_utf8'
 
diff --git a/src/test/rustdoc/intra-link-prim-methods-local.rs b/src/test/rustdoc/intra-doc/prim-methods-local.rs
index d448acf7f96..9888f29db5b 100644
--- a/src/test/rustdoc/intra-link-prim-methods-local.rs
+++ b/src/test/rustdoc/intra-doc/prim-methods-local.rs
@@ -5,7 +5,7 @@
 
 // ignore-tidy-linelength
 
-// @has intra_link_prim_methods_local/index.html
+// @has prim_methods_local/index.html
 // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char'
 // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8"]' 'char::len_utf8'
 
diff --git a/src/test/rustdoc/intra-link-prim-methods.rs b/src/test/rustdoc/intra-doc/prim-methods.rs
index 94c80c996c1..f19cff7d34a 100644
--- a/src/test/rustdoc/intra-link-prim-methods.rs
+++ b/src/test/rustdoc/intra-doc/prim-methods.rs
@@ -2,7 +2,7 @@
 
 // ignore-tidy-linelength
 
-// @has intra_link_prim_methods/index.html
+// @has prim_methods/index.html
 // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char'
 // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8"]' 'char::len_utf8'
 
diff --git a/src/test/rustdoc/intra-doc/prim-precedence.rs b/src/test/rustdoc/intra-doc/prim-precedence.rs
new file mode 100644
index 00000000000..ed2c2cda718
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/prim-precedence.rs
@@ -0,0 +1,17 @@
+// ignore-tidy-linelength
+#![deny(broken_intra_doc_links)]
+
+pub mod char {
+    /// [char]
+    // @has prim_precedence/char/struct.Inner.html '//a/@href' 'https://doc.rust-lang.org/nightly/std/primitive.char.html'
+    pub struct Inner;
+}
+
+/// See [prim@char]
+// @has prim_precedence/struct.MyString.html '//a/@href' 'https://doc.rust-lang.org/nightly/std/primitive.char.html'
+pub struct MyString;
+
+/// See also [crate::char] and [mod@char]
+// @has prim_precedence/struct.MyString2.html '//*[@href="../prim_precedence/char/index.html"]' 'crate::char'
+// @has - '//*[@href="../prim_precedence/char/index.html"]' 'mod@char'
+pub struct MyString2;
diff --git a/src/test/rustdoc/intra-link-primitive-non-default-impl.rs b/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs
index 160b18a967b..548eb090a32 100644
--- a/src/test/rustdoc/intra-link-primitive-non-default-impl.rs
+++ b/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs
@@ -2,7 +2,7 @@
 
 // ignore-tidy-linelength
 
-// @has intra_link_primitive_non_default_impl/fn.str_methods.html
+// @has primitive_non_default_impl/fn.str_methods.html
 /// [`str::trim`]
 // @has - '//*[@href="https://doc.rust-lang.org/nightly/std/primitive.str.html#method.trim"]' 'str::trim'
 /// [`str::to_lowercase`]
@@ -13,7 +13,7 @@
 // @has - '//*[@href="https://doc.rust-lang.org/nightly/std/primitive.str.html#method.replace"]' 'str::replace'
 pub fn str_methods() {}
 
-// @has intra_link_primitive_non_default_impl/fn.f32_methods.html
+// @has primitive_non_default_impl/fn.f32_methods.html
 /// [f32::powi]
 // @has - '//*[@href="https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.powi"]' 'f32::powi'
 /// [f32::sqrt]
@@ -22,7 +22,7 @@ pub fn str_methods() {}
 // @has - '//*[@href="https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.mul_add"]' 'f32::mul_add'
 pub fn f32_methods() {}
 
-// @has intra_link_primitive_non_default_impl/fn.f64_methods.html
+// @has primitive_non_default_impl/fn.f64_methods.html
 /// [`f64::powi`]
 // @has - '//*[@href="https://doc.rust-lang.org/nightly/std/primitive.f64.html#method.powi"]' 'f64::powi'
 /// [`f64::sqrt`]
diff --git a/src/test/rustdoc/intra-link-private.rs b/src/test/rustdoc/intra-doc/private-failures-ignored.rs
index cf8bc0b1586..cf8bc0b1586 100644
--- a/src/test/rustdoc/intra-link-private.rs
+++ b/src/test/rustdoc/intra-doc/private-failures-ignored.rs
diff --git a/src/test/rustdoc/intra-doc-link-private.rs b/src/test/rustdoc/intra-doc/private.rs
index f86ca44403d..f86ca44403d 100644
--- a/src/test/rustdoc/intra-doc-link-private.rs
+++ b/src/test/rustdoc/intra-doc/private.rs
diff --git a/src/test/rustdoc/intra-doc/proc-macro.rs b/src/test/rustdoc/intra-doc/proc-macro.rs
new file mode 100644
index 00000000000..ab4626ccfc3
--- /dev/null
+++ b/src/test/rustdoc/intra-doc/proc-macro.rs
@@ -0,0 +1,27 @@
+// aux-build:proc-macro-macro.rs
+// build-aux-docs
+#![deny(broken_intra_doc_links)]
+
+extern crate proc_macro_macro;
+
+
+pub use proc_macro_macro::{DeriveA, attr_a};
+use proc_macro_macro::{DeriveB, attr_b};
+
+// @has proc_macro/struct.Foo.html
+// @has - '//a/@href' '../proc_macro/derive.DeriveA.html'
+// @has - '//a/@href' '../proc_macro/attr.attr_a.html'
+// @has - '//a/@href' '../proc_macro/trait.DeriveTrait.html'
+// @has - '//a/@href' '../proc_macro_macro/derive.DeriveB.html'
+// @has - '//a/@href' '../proc_macro_macro/attr.attr_b.html'
+/// Link to [DeriveA], [attr_a], [DeriveB], [attr_b], [DeriveTrait]
+pub struct Foo;
+
+// @has proc_macro/struct.Bar.html
+// @has - '//a/@href' '../proc_macro/derive.DeriveA.html'
+// @has - '//a/@href' '../proc_macro/attr.attr_a.html'
+/// Link to [deriveA](derive@DeriveA) [attr](macro@attr_a)
+pub struct Bar;
+
+// this should not cause ambiguity errors
+pub trait DeriveTrait {}
diff --git a/src/test/rustdoc/intra-link-pub-use.rs b/src/test/rustdoc/intra-doc/pub-use.rs
index dd52249abc6..dd52249abc6 100644
--- a/src/test/rustdoc/intra-link-pub-use.rs
+++ b/src/test/rustdoc/intra-doc/pub-use.rs
diff --git a/src/test/rustdoc/intra-link-reexport-additional-docs.rs b/src/test/rustdoc/intra-doc/reexport-additional-docs.rs
index 96f3580f305..96f3580f305 100644
--- a/src/test/rustdoc/intra-link-reexport-additional-docs.rs
+++ b/src/test/rustdoc/intra-doc/reexport-additional-docs.rs
diff --git a/src/test/rustdoc/intra-link-self.rs b/src/test/rustdoc/intra-doc/self.rs
index 81545fec741..81545fec741 100644
--- a/src/test/rustdoc/intra-link-self.rs
+++ b/src/test/rustdoc/intra-doc/self.rs
diff --git a/src/test/rustdoc/through-proc-macro.rs b/src/test/rustdoc/intra-doc/through-proc-macro.rs
index 613410871f0..613410871f0 100644
--- a/src/test/rustdoc/through-proc-macro.rs
+++ b/src/test/rustdoc/intra-doc/through-proc-macro.rs
diff --git a/src/test/rustdoc/intra-link-trait-impl.rs b/src/test/rustdoc/intra-doc/trait-impl.rs
index fab8406d525..fab8406d525 100644
--- a/src/test/rustdoc/intra-link-trait-impl.rs
+++ b/src/test/rustdoc/intra-doc/trait-impl.rs
diff --git a/src/test/rustdoc/intra-link-trait-item.rs b/src/test/rustdoc/intra-doc/trait-item.rs
index 54270414c9d..de8585f4c9a 100644
--- a/src/test/rustdoc/intra-link-trait-item.rs
+++ b/src/test/rustdoc/intra-doc/trait-item.rs
@@ -3,7 +3,7 @@
 
 /// Link to [S::assoc_fn()]
 /// Link to [Default::default()]
-// @has intra_link_trait_item/struct.S.html '//*[@href="../intra_link_trait_item/struct.S.html#method.assoc_fn"]' 'S::assoc_fn()'
+// @has trait_item/struct.S.html '//*[@href="../trait_item/struct.S.html#method.assoc_fn"]' 'S::assoc_fn()'
 // @has - '//*[@href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default"]' 'Default::default()'
 pub struct S;
 
diff --git a/src/test/rustdoc/intra-doc-link-true-false.rs b/src/test/rustdoc/intra-doc/true-false.rs
index 7b21e934147..7b21e934147 100644
--- a/src/test/rustdoc/intra-doc-link-true-false.rs
+++ b/src/test/rustdoc/intra-doc/true-false.rs
diff --git a/src/test/rustdoc/intra-link-associated-defaults.rs b/src/test/rustdoc/intra-link-associated-defaults.rs
deleted file mode 100644
index 2051129b948..00000000000
--- a/src/test/rustdoc/intra-link-associated-defaults.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// ignore-tidy-linelength
-#![deny(intra_doc_link_resolution_failure)]
-#![feature(associated_type_defaults)]
-
-pub trait TraitWithDefault {
-    type T = usize;
-    fn f() -> Self::T {
-        0
-    }
-}
-
-/// Link to [UsesDefaults::T] and [UsesDefaults::f]
-// @has 'intra_link_associated_defaults/struct.UsesDefaults.html' '//a[@href="../intra_link_associated_defaults/struct.UsesDefaults.html#associatedtype.T"]' 'UsesDefaults::T'
-// @has 'intra_link_associated_defaults/struct.UsesDefaults.html' '//a[@href="../intra_link_associated_defaults/struct.UsesDefaults.html#method.f"]' 'UsesDefaults::f'
-pub struct UsesDefaults;
-impl TraitWithDefault for UsesDefaults {}
-
-/// Link to [OverridesDefaults::T] and [OverridesDefaults::f]
-// @has 'intra_link_associated_defaults/struct.OverridesDefaults.html' '//a[@href="../intra_link_associated_defaults/struct.OverridesDefaults.html#associatedtype.T"]' 'OverridesDefaults::T'
-// @has 'intra_link_associated_defaults/struct.OverridesDefaults.html' '//a[@href="../intra_link_associated_defaults/struct.OverridesDefaults.html#method.f"]' 'OverridesDefaults::f'
-pub struct OverridesDefaults;
-impl TraitWithDefault for OverridesDefaults {
-    type T = bool;
-    fn f() -> bool {
-        true
-    }
-}
diff --git a/src/test/rustdoc/intra-link-associated-items.rs b/src/test/rustdoc/intra-link-associated-items.rs
deleted file mode 100644
index daf7075a917..00000000000
--- a/src/test/rustdoc/intra-link-associated-items.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-// ignore-tidy-linelength
-#![deny(intra_doc_link_resolution_failure)]
-
-/// [`std::collections::BTreeMap::into_iter`]
-/// [`String::from`] is ambiguous as to which `From` impl
-/// [Vec::into_iter()] uses a disambiguator
-// @has 'intra_link_associated_items/fn.foo.html' '//a[@href="https://doc.rust-lang.org/nightly/alloc/collections/btree/map/struct.BTreeMap.html#method.into_iter"]' 'std::collections::BTreeMap::into_iter'
-// @has 'intra_link_associated_items/fn.foo.html' '//a[@href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.from"]' 'String::from'
-// @has 'intra_link_associated_items/fn.foo.html' '//a[@href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html#method.into_iter"]' 'Vec::into_iter'
-pub fn foo() {}
-
-/// Link to [MyStruct], [link from struct][MyStruct::method], [MyStruct::clone], [MyStruct::Input]
-// @has 'intra_link_associated_items/struct.MyStruct.html' '//a[@href="../intra_link_associated_items/struct.MyStruct.html"]' 'MyStruct'
-// @has 'intra_link_associated_items/struct.MyStruct.html' '//a[@href="../intra_link_associated_items/struct.MyStruct.html#method.method"]' 'link from struct'
-// @has 'intra_link_associated_items/struct.MyStruct.html' '//a[@href="../intra_link_associated_items/struct.MyStruct.html#method.clone"]' 'MyStruct::clone'
-// @has 'intra_link_associated_items/struct.MyStruct.html' '//a[@href="../intra_link_associated_items/struct.MyStruct.html#associatedtype.Input"]' 'MyStruct::Input'
-pub struct MyStruct { foo: () }
-
-impl Clone for MyStruct {
-    fn clone(&self) -> Self {
-        MyStruct
-    }
-}
-
-pub trait T {
-    type Input;
-    fn method(i: Self::Input);
-}
-
-impl T for MyStruct {
-    type Input = usize;
-
-    /// [link from method][MyStruct::method] on method
-    // @has 'intra_link_associated_items/struct.MyStruct.html' '//a[@href="../intra_link_associated_items/struct.MyStruct.html#method.method"]' 'link from method'
-    fn method(i: usize) {
-    }
-}
-
-/// Ambiguity between which trait to use
-pub trait T1 {
-    fn ambiguous_method();
-}
-
-pub trait T2 {
-    fn ambiguous_method();
-}
-
-/// Link to [S::ambiguous_method]
-// FIXME: there is no way to disambiguate these.
-// Since we have `#[deny(intra_doc_failure)]`, we still know it was one or the other.
-pub struct S;
-
-impl T1 for S {
-    fn ambiguous_method() {}
-}
-
-impl T2 for S {
-    fn ambiguous_method() {}
-}
-
-fn main() {}
diff --git a/src/test/rustdoc/intra-link-disambiguators-removed.rs b/src/test/rustdoc/intra-link-disambiguators-removed.rs
deleted file mode 100644
index 26d05b484b9..00000000000
--- a/src/test/rustdoc/intra-link-disambiguators-removed.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// ignore-tidy-linelength
-#![deny(intra_doc_link_resolution_failure)]
-// first try backticks
-/// Trait: [`trait@Name`], fn: [`fn@Name`], [`Name`][`macro@Name`]
-// @has intra_link_disambiguators_removed/struct.AtDisambiguator.html
-// @has - '//a[@href="../intra_link_disambiguators_removed/trait.Name.html"][code]' "Name"
-// @has - '//a[@href="../intra_link_disambiguators_removed/fn.Name.html"][code]' "Name"
-// @has - '//a[@href="../intra_link_disambiguators_removed/macro.Name.html"][code]' "Name"
-pub struct AtDisambiguator;
-
-/// fn: [`Name()`], macro: [`Name!`]
-// @has intra_link_disambiguators_removed/struct.SymbolDisambiguator.html
-// @has - '//a[@href="../intra_link_disambiguators_removed/fn.Name.html"][code]' "Name()"
-// @has - '//a[@href="../intra_link_disambiguators_removed/macro.Name.html"][code]' "Name!"
-pub struct SymbolDisambiguator;
-
-// Now make sure that backticks aren't added if they weren't already there
-/// [fn@Name]
-// @has intra_link_disambiguators_removed/trait.Name.html
-// @has - '//a[@href="../intra_link_disambiguators_removed/fn.Name.html"]' "Name"
-// @!has - '//a[@href="../intra_link_disambiguators_removed/fn.Name.html"][code]' "Name"
-
-// FIXME: this will turn !() into ! alone
-/// [Name!()]
-// @has - '//a[@href="../intra_link_disambiguators_removed/macro.Name.html"]' "Name!"
-pub trait Name {}
-
-#[allow(non_snake_case)]
-
-// Try collapsed reference links
-/// [macro@Name][]
-// @has intra_link_disambiguators_removed/fn.Name.html
-// @has - '//a[@href="../intra_link_disambiguators_removed/macro.Name.html"]' "Name"
-
-// Try links that have the same text as a generated URL
-/// Weird URL aligned [../intra_link_disambiguators_removed/macro.Name.html][trait@Name]
-// @has - '//a[@href="../intra_link_disambiguators_removed/trait.Name.html"]' "../intra_link_disambiguators_removed/macro.Name.html"
-pub fn Name() {}
-
-#[macro_export]
-// Rustdoc doesn't currently handle links that have weird interspersing of inline code blocks.
-/// [fn@Na`m`e]
-// @has intra_link_disambiguators_removed/macro.Name.html
-// @has - '//a[@href="../intra_link_disambiguators_removed/fn.Name.html"]' "fn@Name"
-
-// It also doesn't handle any case where the code block isn't the whole link text:
-/// [trait@`Name`]
-// @has - '//a[@href="../intra_link_disambiguators_removed/trait.Name.html"]' "trait@Name"
-macro_rules! Name {
-    () => ()
-}
diff --git a/src/test/rustdoc/intra-link-extern-type.rs b/src/test/rustdoc/intra-link-extern-type.rs
deleted file mode 100644
index 418e0d91ea7..00000000000
--- a/src/test/rustdoc/intra-link-extern-type.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-#![feature(extern_types)]
-
-extern {
-    pub type ExternType;
-}
-
-impl ExternType {
-    pub fn f(&self) {
-
-    }
-}
-
-// @has 'intra_link_extern_type/foreigntype.ExternType.html'
-// @has 'intra_link_extern_type/fn.links_to_extern_type.html' \
-// 'href="../intra_link_extern_type/foreigntype.ExternType.html#method.f"'
-/// See also [ExternType::f]
-pub fn links_to_extern_type() {
-}
diff --git a/src/test/rustdoc/intra-link-prim-assoc.rs b/src/test/rustdoc/intra-link-prim-assoc.rs
deleted file mode 100644
index c0066885e19..00000000000
--- a/src/test/rustdoc/intra-link-prim-assoc.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-// ignore-tidy-linelength
-#![deny(broken_intra_doc_links)]
-
-//! [i32::MAX]
-// @has intra_link_prim_assoc/index.html '//a[@href="https://doc.rust-lang.org/nightly/std/primitive.i32.html#associatedconstant.MAX"]' "i32::MAX"
diff --git a/src/test/rustdoc/intra-link-prim-precedence.rs b/src/test/rustdoc/intra-link-prim-precedence.rs
deleted file mode 100644
index 0a4e57ef643..00000000000
--- a/src/test/rustdoc/intra-link-prim-precedence.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// ignore-tidy-linelength
-#![deny(broken_intra_doc_links)]
-
-pub mod char {
-    /// [char]
-    // @has intra_link_prim_precedence/char/struct.Inner.html '//a/@href' 'https://doc.rust-lang.org/nightly/std/primitive.char.html'
-    pub struct Inner;
-}
-
-/// See [prim@char]
-// @has intra_link_prim_precedence/struct.MyString.html '//a/@href' 'https://doc.rust-lang.org/nightly/std/primitive.char.html'
-pub struct MyString;
-
-/// See also [crate::char] and [mod@char]
-// @has intra_link_prim_precedence/struct.MyString2.html '//*[@href="../intra_link_prim_precedence/char/index.html"]' 'crate::char'
-// @has - '//*[@href="../intra_link_prim_precedence/char/index.html"]' 'mod@char'
-pub struct MyString2;
diff --git a/src/test/rustdoc/intra-link-proc-macro.rs b/src/test/rustdoc/intra-link-proc-macro.rs
deleted file mode 100644
index 7a8403255ed..00000000000
--- a/src/test/rustdoc/intra-link-proc-macro.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// aux-build:intra-link-proc-macro-macro.rs
-// build-aux-docs
-#![deny(broken_intra_doc_links)]
-
-extern crate intra_link_proc_macro_macro;
-
-
-pub use intra_link_proc_macro_macro::{DeriveA, attr_a};
-use intra_link_proc_macro_macro::{DeriveB, attr_b};
-
-// @has intra_link_proc_macro/struct.Foo.html
-// @has - '//a/@href' '../intra_link_proc_macro/derive.DeriveA.html'
-// @has - '//a/@href' '../intra_link_proc_macro/attr.attr_a.html'
-// @has - '//a/@href' '../intra_link_proc_macro/trait.DeriveTrait.html'
-// @has - '//a/@href' '../intra_link_proc_macro_macro/derive.DeriveB.html'
-// @has - '//a/@href' '../intra_link_proc_macro_macro/attr.attr_b.html'
-/// Link to [DeriveA], [attr_a], [DeriveB], [attr_b], [DeriveTrait]
-pub struct Foo;
-
-// @has intra_link_proc_macro/struct.Bar.html
-// @has - '//a/@href' '../intra_link_proc_macro/derive.DeriveA.html'
-// @has - '//a/@href' '../intra_link_proc_macro/attr.attr_a.html'
-/// Link to [deriveA](derive@DeriveA) [attr](macro@attr_a)
-pub struct Bar;
-
-// this should not cause ambiguity errors
-pub trait DeriveTrait {}