From 2dad90d8b5c33c3aeef146d709b7f9ae66db49f4 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Wed, 5 Aug 2020 20:46:02 -0400 Subject: [PATCH] Suggest f() for functions and add a test case --- src/librustdoc/passes/collect_intra_doc_links.rs | 3 ++- .../rustdoc-ui/intra-links-disambiguator-mismatch.rs | 5 +++++ .../intra-links-disambiguator-mismatch.stderr | 10 +++++++++- 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 8e485b9783094..ef44c9c937d85 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 3bc08b23341e5..1a7a2fce7a3f2 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 8eb582512c03b..9edf838f9d88b 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