forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Allow generic parameters in intra-doc links
The contents of the generics will be mostly ignored (except for warning if fully-qualified syntax is used, which is currently unsupported in intra-doc links - see issue rust-lang#74563). * Allow links like `Vec<T>`, `Result<T, E>`, and `Option<Box<T>>` * Allow links like `Vec::<T>::new()` * Warn on * Unbalanced angle brackets (e.g. `Vec<T` or `Vec<T>>`) * Missing type to apply generics to (`<T>` or `<Box<T>>`) * Use of fully-qualified syntax (`<Vec as IntoIterator>::into_iter`) * Invalid path separator (`Vec:<T>:new`) * Too many angle brackets (`Vec<<T>>`) * Empty angle brackets (`Vec<>`) Note that this implementation *does* allow some constructs that aren't valid in the actual Rust syntax, for example `Box::<T>new()`. That may not be supported in rustdoc in the future; it is an implementation detail.
- Loading branch information
Showing
6 changed files
with
381 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#![deny(broken_intra_doc_links)] | ||
|
||
//! [Vec<] //~ ERROR | ||
//! [Vec<Box<T] //~ ERROR | ||
//! [Vec<Box<T>] //~ ERROR | ||
//! [Vec<Box<T>>>] //~ ERROR | ||
//! [Vec<T>>>] //~ ERROR | ||
//! [<Vec] //~ ERROR | ||
//! [Vec::<] //~ ERROR | ||
//! [<T>] //~ ERROR | ||
//! [<invalid syntax>] //~ ERROR | ||
//! [Vec:<T>:new()] //~ ERROR | ||
//! [Vec<<T>>] //~ ERROR | ||
//! [Vec<>] //~ ERROR | ||
//! [Vec<<>>] //~ ERROR | ||
// FIXME(#74563) support UFCS | ||
//! [<Vec as IntoIterator>::into_iter] //~ ERROR | ||
//! [<Vec<T> as IntoIterator>::iter] //~ ERROR |
102 changes: 102 additions & 0 deletions
102
src/test/rustdoc-ui/intra-link-malformed-generics.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
error: unresolved link to `Vec<` | ||
--> $DIR/intra-link-malformed-generics.rs:3:6 | ||
| | ||
LL | //! [Vec<] | ||
| ^^^^ unbalanced angle brackets | ||
| | ||
note: the lint level is defined here | ||
--> $DIR/intra-link-malformed-generics.rs:1:9 | ||
| | ||
LL | #![deny(broken_intra_doc_links)] | ||
| ^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: unresolved link to `Vec<Box<T` | ||
--> $DIR/intra-link-malformed-generics.rs:4:6 | ||
| | ||
LL | //! [Vec<Box<T] | ||
| ^^^^^^^^^ unbalanced angle brackets | ||
|
||
error: unresolved link to `Vec<Box<T>` | ||
--> $DIR/intra-link-malformed-generics.rs:5:6 | ||
| | ||
LL | //! [Vec<Box<T>] | ||
| ^^^^^^^^^^ unbalanced angle brackets | ||
|
||
error: unresolved link to `Vec<Box<T>>>` | ||
--> $DIR/intra-link-malformed-generics.rs:6:6 | ||
| | ||
LL | //! [Vec<Box<T>>>] | ||
| ^^^^^^^^^^^^ unbalanced angle brackets | ||
|
||
error: unresolved link to `Vec<T>>>` | ||
--> $DIR/intra-link-malformed-generics.rs:7:6 | ||
| | ||
LL | //! [Vec<T>>>] | ||
| ^^^^^^^^ unbalanced angle brackets | ||
|
||
error: unresolved link to `<Vec` | ||
--> $DIR/intra-link-malformed-generics.rs:8:6 | ||
| | ||
LL | //! [<Vec] | ||
| ^^^^ unbalanced angle brackets | ||
|
||
error: unresolved link to `Vec::<` | ||
--> $DIR/intra-link-malformed-generics.rs:9:6 | ||
| | ||
LL | //! [Vec::<] | ||
| ^^^^^^ unbalanced angle brackets | ||
|
||
error: unresolved link to `<T>` | ||
--> $DIR/intra-link-malformed-generics.rs:10:6 | ||
| | ||
LL | //! [<T>] | ||
| ^^^ missing type for generic parameters | ||
|
||
error: unresolved link to `<invalid syntax>` | ||
--> $DIR/intra-link-malformed-generics.rs:11:6 | ||
| | ||
LL | //! [<invalid syntax>] | ||
| ^^^^^^^^^^^^^^^^ missing type for generic parameters | ||
|
||
error: unresolved link to `Vec:<T>:new` | ||
--> $DIR/intra-link-malformed-generics.rs:12:6 | ||
| | ||
LL | //! [Vec:<T>:new()] | ||
| ^^^^^^^^^^^^^ has invalid path separator | ||
|
||
error: unresolved link to `Vec<<T>>` | ||
--> $DIR/intra-link-malformed-generics.rs:13:6 | ||
| | ||
LL | //! [Vec<<T>>] | ||
| ^^^^^^^^ too many angle brackets | ||
|
||
error: unresolved link to `Vec<>` | ||
--> $DIR/intra-link-malformed-generics.rs:14:6 | ||
| | ||
LL | //! [Vec<>] | ||
| ^^^^^ empty angle brackets | ||
|
||
error: unresolved link to `Vec<<>>` | ||
--> $DIR/intra-link-malformed-generics.rs:15:6 | ||
| | ||
LL | //! [Vec<<>>] | ||
| ^^^^^^^ too many angle brackets | ||
|
||
error: unresolved link to `<Vec as IntoIterator>::into_iter` | ||
--> $DIR/intra-link-malformed-generics.rs:18:6 | ||
| | ||
LL | //! [<Vec as IntoIterator>::into_iter] | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ fully-qualified syntax is unsupported | ||
| | ||
= note: see https://github.com/rust-lang/rust/issues/74563 for more information | ||
|
||
error: unresolved link to `<Vec<T> as IntoIterator>::iter` | ||
--> $DIR/intra-link-malformed-generics.rs:19:6 | ||
| | ||
LL | //! [<Vec<T> as IntoIterator>::iter] | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ fully-qualified syntax is unsupported | ||
| | ||
= note: see https://github.com/rust-lang/rust/issues/74563 for more information | ||
|
||
error: aborting due to 15 previous errors | ||
|
Oops, something went wrong.