about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustdoc/passes/collect_intra_doc_links.rs3
-rw-r--r--src/test/rustdoc-ui/intra-links-disambiguator-mismatch.rs5
-rw-r--r--src/test/rustdoc-ui/intra-links-disambiguator-mismatch.stderr10
3 files changed, 16 insertions, 2 deletions
diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs
index 8e485b97830..ef44c9c937d 100644
--- a/src/librustdoc/passes/collect_intra_doc_links.rs
+++ b/src/librustdoc/passes/collect_intra_doc_links.rs
@@ -893,6 +893,8 @@ impl Disambiguator {
     fn display_for(kind: DefKind, path_str: &str) -> String {
         if kind == DefKind::Macro(MacroKind::Bang) {
             return format!("{}!", path_str);
+        } else if kind == DefKind::Fn || kind == DefKind::AssocFn {
+            return format!("{}()", path_str);
         }
         let prefix = match kind {
             DefKind::Struct => "struct",
@@ -904,7 +906,6 @@ impl Disambiguator {
                 "const"
             }
             DefKind::Static => "static",
-            DefKind::Fn | DefKind::AssocFn => "fn",
             DefKind::Macro(MacroKind::Derive) => "derive",
             // Now handle things that don't have a specific disambiguator
             _ => match kind
diff --git a/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.rs b/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.rs
index 3bc08b23341..1a7a2fce7a3 100644
--- a/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.rs
+++ b/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.rs
@@ -60,4 +60,9 @@ trait T {}
 //~^ ERROR incompatible link kind for `c`
 //~| NOTE this link resolved
 //~| HELP use its disambiguator
+
+/// Link to [const@f]
+//~^ ERROR incompatible link kind for `f`
+//~| NOTE this link resolved
+//~| HELP use its disambiguator
 pub fn f() {}
diff --git a/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.stderr b/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.stderr
index 8eb582512c0..9edf838f9d8 100644
--- a/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.stderr
+++ b/src/test/rustdoc-ui/intra-links-disambiguator-mismatch.stderr
@@ -83,5 +83,13 @@ LL | /// Link to [c()]
    |
    = note: this link resolved to a constant, which is not a function
 
-error: aborting due to 10 previous errors
+error: incompatible link kind for `f`
+  --> $DIR/intra-links-disambiguator-mismatch.rs:64:14
+   |
+LL | /// Link to [const@f]
+   |              ^^^^^^^ help: to link to the function, use its disambiguator: `f()`
+   |
+   = note: this link resolved to a function, which is not a constant
+
+error: aborting due to 11 previous errors