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