suggest removing disambiguator if linking to field
This commit is contained in:
parent
e97c29bda2
commit
3dab2d210f
3 changed files with 32 additions and 0 deletions
|
@ -1610,6 +1610,8 @@ impl Disambiguator {
|
|||
return Suggestion::Macro;
|
||||
} else if kind == DefKind::Fn || kind == DefKind::AssocFn {
|
||||
return Suggestion::Function;
|
||||
} else if kind == DefKind::Field {
|
||||
return Suggestion::RemoveDisambiguator;
|
||||
}
|
||||
|
||||
let prefix = match kind {
|
||||
|
@ -1674,6 +1676,8 @@ enum Suggestion {
|
|||
Function,
|
||||
/// `m!`
|
||||
Macro,
|
||||
/// `foo` without any disambiguator
|
||||
RemoveDisambiguator,
|
||||
}
|
||||
|
||||
impl Suggestion {
|
||||
|
@ -1682,6 +1686,7 @@ impl Suggestion {
|
|||
Self::Prefix(x) => format!("prefix with `{}@`", x).into(),
|
||||
Self::Function => "add parentheses".into(),
|
||||
Self::Macro => "add an exclamation mark".into(),
|
||||
Self::RemoveDisambiguator => "remove the disambiguator".into(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1691,6 +1696,7 @@ impl Suggestion {
|
|||
Self::Prefix(prefix) => format!("{}@{}", prefix, path_str),
|
||||
Self::Function => format!("{}()", path_str),
|
||||
Self::Macro => format!("{}!", path_str),
|
||||
Self::RemoveDisambiguator => path_str.into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
11
src/test/rustdoc-ui/intra-doc/field-ice.rs
Normal file
11
src/test/rustdoc-ui/intra-doc/field-ice.rs
Normal file
|
@ -0,0 +1,11 @@
|
|||
#![deny(rustdoc::broken_intra_doc_links)]
|
||||
//~^NOTE the lint level is defined here
|
||||
|
||||
/// [`Foo::bar`]
|
||||
/// [`Foo::bar()`]
|
||||
//~^ERROR incompatible link kind for `Foo::bar`
|
||||
//~|HELP to link to the field, remove the disambiguator
|
||||
//~|NOTE this link resolved to a field, which is not a function
|
||||
pub struct Foo {
|
||||
pub bar: u8
|
||||
}
|
15
src/test/rustdoc-ui/intra-doc/field-ice.stderr
Normal file
15
src/test/rustdoc-ui/intra-doc/field-ice.stderr
Normal file
|
@ -0,0 +1,15 @@
|
|||
error: incompatible link kind for `Foo::bar`
|
||||
--> $DIR/field-ice.rs:5:6
|
||||
|
|
||||
LL | /// [`Foo::bar()`]
|
||||
| ^^^^^^^^^^^^ help: to link to the field, remove the disambiguator: ``Foo::bar``
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/field-ice.rs:1:9
|
||||
|
|
||||
LL | #![deny(rustdoc::broken_intra_doc_links)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: this link resolved to a field, which is not a function
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Add table
Reference in a new issue