break
}
- let meta = attr.meta().unwrap();
+ let meta = match attr.meta() {
+ Some(meta) => meta,
+ None => continue,
+ };
depr = match &meta.kind {
MetaItemKind::Word => Some(Deprecation { since: None, note: None }),
MetaItemKind::NameValue(..) => {
--- /dev/null
+// The original problem in #66340 was that `find_deprecation_generic`
+// called `attr.meta().unwrap()` under the assumption that the attribute
+// was a well-formed `MetaItem`.
+
+fn main() {
+ foo()
+}
+
+#[deprecated(note = test)]
+//~^ ERROR expected unsuffixed literal or identifier, found `test`
+fn foo() {}
--- /dev/null
+error: expected unsuffixed literal or identifier, found `test`
+ --> $DIR/issue-66340-deprecated-attr-non-meta-grammar.rs:9:21
+ |
+LL | #[deprecated(note = test)]
+ | ^^^^
+
+error: aborting due to previous error
+