mirror of https://github.com/rust-lang/rust.git
Rollup merge of #86401 - FabianWolff:issue-83512, r=LeSeulArtichaut
Fix ICE when using `#[doc(keyword = "...")]` on non-items This pull request fixes #83512. The code for checking attributes calls `expect_item()` when it shouldn't, thus causing an ICE. I have implemented a proper check for the node kind, so that an error is reported instead of the ICE.
This commit is contained in:
commit
0274401f93
|
@ -525,8 +525,11 @@ impl CheckAttrVisitor<'tcx> {
|
|||
self.doc_attr_str_error(meta, "keyword");
|
||||
return false;
|
||||
}
|
||||
match self.tcx.hir().expect_item(hir_id).kind {
|
||||
ItemKind::Mod(ref module) => {
|
||||
match self.tcx.hir().find(hir_id).and_then(|node| match node {
|
||||
hir::Node::Item(item) => Some(&item.kind),
|
||||
_ => None,
|
||||
}) {
|
||||
Some(ItemKind::Mod(ref module)) => {
|
||||
if !module.item_ids.is_empty() {
|
||||
self.tcx
|
||||
.sess
|
||||
|
|
|
@ -10,3 +10,11 @@ mod foo {
|
|||
|
||||
#[doc(keyword = "hall")] //~ ERROR
|
||||
fn foo() {}
|
||||
|
||||
|
||||
// Regression test for the ICE described in #83512.
|
||||
trait Foo {
|
||||
#[doc(keyword = "match")]
|
||||
//~^ ERROR: `#[doc(keyword = "...")]` can only be used on modules
|
||||
fn quux() {}
|
||||
}
|
||||
|
|
|
@ -10,11 +10,17 @@ error: `#[doc(keyword = "...")]` can only be used on modules
|
|||
LL | #[doc(keyword = "hall")]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `#[doc(keyword = "...")]` can only be used on modules
|
||||
--> $DIR/doc_keyword.rs:17:11
|
||||
|
|
||||
LL | #[doc(keyword = "match")]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `#![doc(keyword = "...")]` isn't allowed as a crate-level attribute
|
||||
--> $DIR/doc_keyword.rs:4:8
|
||||
|
|
||||
LL | #![doc(keyword = "hello")]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
|
|
Loading…
Reference in New Issue