rustdoc: fix ICE from rustc_resolve and librustdoc parse divergence
This commit is contained in:
parent
de96f3d873
commit
df8a48fc8a
3 changed files with 61 additions and 0 deletions
|
@ -367,6 +367,7 @@ fn preprocess_link(link: &str) -> Box<str> {
|
|||
let link = link.strip_suffix("{}").unwrap_or(link);
|
||||
let link = link.strip_suffix("[]").unwrap_or(link);
|
||||
let link = if link != "!" { link.strip_suffix('!').unwrap_or(link) } else { link };
|
||||
let link = link.trim();
|
||||
strip_generics_from_path(link).unwrap_or_else(|_| link.into())
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
// this test used to ICE
|
||||
#![deny(rustdoc::broken_intra_doc_links)]
|
||||
//! [Clone ()]. //~ ERROR unresolved
|
||||
//! [Clone !]. //~ ERROR incompatible
|
||||
//! [`Clone ()`]. //~ ERROR unresolved
|
||||
//! [`Clone !`]. //~ ERROR incompatible
|
|
@ -0,0 +1,54 @@
|
|||
error: unresolved link to `Clone`
|
||||
--> $DIR/issue-110495-suffix-with-space.rs:3:6
|
||||
|
|
||||
LL | //! [Clone ()].
|
||||
| ^^^^^^^^ this link resolves to the trait `Clone`, which is not in the value namespace
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/issue-110495-suffix-with-space.rs:2:9
|
||||
|
|
||||
LL | #![deny(rustdoc::broken_intra_doc_links)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
help: to link to the trait, prefix with `trait@`
|
||||
|
|
||||
LL - //! [Clone ()].
|
||||
LL + //! [trait@Clone ].
|
||||
|
|
||||
|
||||
error: incompatible link kind for `Clone`
|
||||
--> $DIR/issue-110495-suffix-with-space.rs:4:6
|
||||
|
|
||||
LL | //! [Clone !].
|
||||
| ^^^^^^^ this link resolved to a derive macro, which is not a macro
|
||||
|
|
||||
help: to link to the derive macro, prefix with `derive@`
|
||||
|
|
||||
LL - //! [Clone !].
|
||||
LL + //! [derive@Clone ].
|
||||
|
|
||||
|
||||
error: unresolved link to `Clone`
|
||||
--> $DIR/issue-110495-suffix-with-space.rs:5:7
|
||||
|
|
||||
LL | //! [`Clone ()`].
|
||||
| ^^^^^^^^ this link resolves to the trait `Clone`, which is not in the value namespace
|
||||
|
|
||||
help: to link to the trait, prefix with `trait@`
|
||||
|
|
||||
LL - //! [`Clone ()`].
|
||||
LL + //! [`trait@Clone (`].
|
||||
|
|
||||
|
||||
error: incompatible link kind for `Clone`
|
||||
--> $DIR/issue-110495-suffix-with-space.rs:6:7
|
||||
|
|
||||
LL | //! [`Clone !`].
|
||||
| ^^^^^^^ this link resolved to a derive macro, which is not a macro
|
||||
|
|
||||
help: to link to the derive macro, prefix with `derive@`
|
||||
|
|
||||
LL | //! [`derive@Clone !`].
|
||||
| +++++++
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
Loading…
Add table
Reference in a new issue