1
Fork 0

Rollup merge of #104751 - nnethercote:fix-104620, r=petrochenkov

Fix an ICE parsing a malformed attribute.

Fixes #104620.

r? `@petrochenkov`
This commit is contained in:
Dylan DPC 2022-11-23 20:32:38 +05:30 committed by GitHub
commit 5d7b68c82b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 3 deletions

View file

@ -618,9 +618,12 @@ impl MetaItemKind {
}) => MetaItemKind::list_from_tokens(tokens.clone()),
AttrArgs::Delimited(..) => None,
AttrArgs::Eq(_, AttrArgsEq::Ast(expr)) => match expr.kind {
ast::ExprKind::Lit(token_lit) => Some(MetaItemKind::NameValue(
Lit::from_token_lit(token_lit, expr.span).expect("token_lit in from_attr_args"),
)),
ast::ExprKind::Lit(token_lit) => {
// Turn failures to `None`, we'll get parse errors elsewhere.
Lit::from_token_lit(token_lit, expr.span)
.ok()
.map(|lit| MetaItemKind::NameValue(lit))
}
_ => None,
},
AttrArgs::Eq(_, AttrArgsEq::Hir(lit)) => Some(MetaItemKind::NameValue(lit.clone())),

View file

@ -0,0 +1,4 @@
#![feature(rustc_attrs)]
#![rustc_dummy=5z] //~ ERROR unexpected expression: `5z`
fn main() {}

View file

@ -0,0 +1,8 @@
error: unexpected expression: `5z`
--> $DIR/issue-104620.rs:3:16
|
LL | #![rustc_dummy=5z]
| ^^
error: aborting due to previous error