@@ -328,14 +328,14 @@ fn expr_to_lit(
328328 match res {
329329 Ok ( lit) => {
330330 if token_lit. suffix . is_some ( ) {
331- should_emit. emit_err_or_delay (
331+ should_emit. emit_err (
332332 psess. dcx ( ) . create_err ( SuffixedLiteralInAttribute { span : lit. span } ) ,
333333 ) ;
334334 None
335335 } else {
336336 if !lit. kind . is_unsuffixed ( ) {
337337 // Emit error and continue, we can still parse the attribute as if the suffix isn't there
338- should_emit. maybe_emit_err (
338+ should_emit. emit_err (
339339 psess. dcx ( ) . create_err ( SuffixedLiteralInAttribute { span : lit. span } ) ,
340340 ) ;
341341 }
@@ -355,19 +355,19 @@ fn expr_to_lit(
355355 }
356356 }
357357 } else {
358+ if matches ! ( should_emit, ShouldEmit :: Nothing ) {
359+ return None ;
360+ }
361+
358362 // Example cases:
359363 // - `#[foo = 1+1]`: results in `ast::ExprKind::BinOp`.
360364 // - `#[foo = include_str!("nonexistent-file.rs")]`:
361365 // results in `ast::ExprKind::Err`. In that case we delay
362366 // the error because an earlier error will have already
363367 // been reported.
364368 let msg = "attribute value must be a literal" ;
365- let mut err = psess. dcx ( ) . struct_span_err ( span, msg) ;
366- if let ExprKind :: Err ( _) = expr. kind {
367- err. downgrade_to_delayed_bug ( ) ;
368- }
369-
370- should_emit. emit_err_or_delay ( err) ;
369+ let err = psess. dcx ( ) . struct_span_err ( span, msg) ;
370+ should_emit. emit_err ( err) ;
371371 None
372372 }
373373}
@@ -400,7 +400,7 @@ impl<'a, 'sess> MetaItemListParserContext<'a, 'sess> {
400400
401401 if !lit. kind . is_unsuffixed ( ) {
402402 // Emit error and continue, we can still parse the attribute as if the suffix isn't there
403- self . should_emit . maybe_emit_err (
403+ self . should_emit . emit_err (
404404 self . parser . dcx ( ) . create_err ( SuffixedLiteralInAttribute { span : lit. span } ) ,
405405 ) ;
406406 }
@@ -542,7 +542,7 @@ impl<'a> MetaItemListParser<'a> {
542542 ) {
543543 Ok ( s) => Some ( s) ,
544544 Err ( e) => {
545- should_emit. emit_err_or_delay ( e) ;
545+ should_emit. emit_err ( e) ;
546546 None
547547 }
548548 }
0 commit comments