@@ -460,45 +460,51 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs {
460
460
let mut prefix = None ;
461
461
let mut entry = None ;
462
462
for item in l {
463
- let Some ( metaitem) = item. meta_item ( ) else {
463
+ let Some ( meta_item) = item. meta_item ( ) else {
464
+ tcx. dcx ( ) . span_err ( item. span ( ) , "Expected name value pair." ) ;
464
465
continue ;
465
466
} ;
466
467
467
- let [ single_segment] = & metaitem. path . segments [ ..] else {
468
+ let Some ( name_value_lit) = meta_item. name_value_literal ( ) else {
469
+ tcx. dcx ( ) . span_err ( item. span ( ) , "Expected name value pair." ) ;
468
470
continue ;
469
471
} ;
470
472
471
- let attrib_to_write = match single_segment . ident . name {
473
+ let attrib_to_write = match meta_item . name_or_empty ( ) {
472
474
sym:: prefix_nops => & mut prefix,
473
- sym:: entry_nops => & mut entry,
474
- _ => {
475
- tcx. dcx ( ) . span_err ( metaitem. span , "Unexpected parameter." ) ;
476
- continue ;
477
- }
478
- } ;
479
-
480
- if let Some ( metaitem) =
481
- item. meta_item ( ) . map ( |e| e. name_value_literal ( ) ) . flatten ( )
482
- {
483
- let rustc_ast:: LitKind :: Int ( val, _) = metaitem. kind else {
475
+ sym:: entry_nops => & mut entry,
476
+ _ => {
484
477
tcx. dcx ( ) . span_err (
485
- metaitem. span ,
486
- "Expected integer value between 0 and 255" ,
478
+ item. span ( ) ,
479
+ format ! (
480
+ "Unexpected name. Allowed names: {}, {}" ,
481
+ sym:: prefix_nops,
482
+ sym:: entry_nops
483
+ ) ,
487
484
) ;
488
485
continue ;
489
- } ;
486
+ }
487
+ } ;
490
488
491
- let Ok ( val) = val . get ( ) . try_into ( ) else {
492
- tcx. dcx ( ) . span_err (
493
- metaitem . span ,
494
- "Integer value outside range between 0 and 255.",
495
- ) ;
496
- continue ;
497
- } ;
489
+ let rustc_ast :: LitKind :: Int ( val, _ ) = name_value_lit . kind else {
490
+ tcx. dcx ( ) . span_err (
491
+ name_value_lit . span ,
492
+ "Expected integer value between 0 and 255.",
493
+ ) ;
494
+ continue ;
495
+ } ;
498
496
499
- * attrib_to_write = Some ( val) ;
500
- }
497
+ let Ok ( val) = val. get ( ) . try_into ( ) else {
498
+ tcx. dcx ( ) . span_err (
499
+ name_value_lit. span ,
500
+ "Integer value outside range between 0 and 255." ,
501
+ ) ;
502
+ continue ;
503
+ } ;
504
+
505
+ * attrib_to_write = Some ( val) ;
501
506
}
507
+
502
508
if let ( None , None ) = ( prefix, entry) {
503
509
tcx. dcx ( ) . span_err ( attr. span , "Must specify at least one parameter." ) ;
504
510
}
0 commit comments