mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-30 03:57:37 +00:00

`CheckAttrVisitor::check_doc_keyword` checks `#[doc(keyword = "..")]` attributes to ensure they are on an empty module, and that the value is a non-empty identifier. The `rustc::existing_doc_keyword` lint checks these attributes to ensure that the value is the name of a keyword. It's silly to have two different checking mechanisms for these attributes. This commit does the following. - Changes `check_doc_keyword` to check that the value is the name of a keyword (avoiding the need for the identifier check, which removes a dependency on `rustc_lexer`). - Removes the lint. - Updates tests accordingly. There is one hack: the `SelfTy` FIXME case used to used to be handled by disabling the lint, but now is handled with a special case in `is_doc_keyword`. That hack will go away if/when the FIXME is fixed. Co-Authored-By: Guillaume Gomez <guillaume1.gomez@gmail.com>
24 lines
644 B
Rust
24 lines
644 B
Rust
#![crate_type = "lib"]
|
|
#![feature(rustdoc_internals)]
|
|
|
|
#![doc(keyword = "hello")]
|
|
//~^ ERROR `#![doc(keyword = "...")]` isn't allowed as a crate-level attribute
|
|
#[doc(keyword = "hell")] //~ ERROR `#[doc(keyword = "...")]` should be used on empty modules
|
|
mod foo {
|
|
fn hell() {}
|
|
}
|
|
|
|
#[doc(keyword = "hall")] //~ ERROR `#[doc(keyword = "...")]` should be used on modules
|
|
fn foo() {}
|
|
|
|
|
|
// Regression test for the ICE described in #83512.
|
|
trait Foo {
|
|
#[doc(keyword = "match")]
|
|
//~^ ERROR: `#[doc(keyword = "...")]` should be used on modules
|
|
fn quux() {}
|
|
}
|
|
|
|
#[doc(keyword = "tadam")] //~ ERROR nonexistent keyword `tadam`
|
|
mod tadam {}
|