@@ -347,7 +347,13 @@ impl<'a> StripUnconfigured<'a> {
347
347
if !is_cfg ( attr) {
348
348
return true ;
349
349
}
350
-
350
+ let meta_item = match validate_attr:: parse_meta ( self . sess , attr) {
351
+ Ok ( meta_item) => meta_item,
352
+ Err ( mut err) => {
353
+ err. emit ( ) ;
354
+ return true ;
355
+ }
356
+ } ;
351
357
let error = |span, msg, suggestion : & str | {
352
358
let mut err = self . sess . span_diagnostic . struct_span_err ( span, msg) ;
353
359
if !suggestion. is_empty ( ) {
@@ -361,41 +367,15 @@ impl<'a> StripUnconfigured<'a> {
361
367
err. emit ( ) ;
362
368
true
363
369
} ;
364
-
365
- let meta_item = match validate_attr:: parse_meta ( self . sess , attr) {
366
- Ok ( meta_item) => meta_item,
367
- Err ( mut err) => {
368
- err. emit ( ) ;
369
- return true ;
370
- }
371
- } ;
372
- let nested_meta_items = if let Some ( nested_meta_items) = meta_item. meta_item_list ( ) {
373
- nested_meta_items
374
- } else {
375
- return error (
376
- meta_item. span ,
377
- "`cfg` is not followed by parentheses" ,
378
- "cfg(/* predicate */)" ,
379
- ) ;
380
- } ;
381
-
382
- if nested_meta_items. is_empty ( ) {
383
- return error ( meta_item. span , "`cfg` predicate is not specified" , "" ) ;
384
- } else if nested_meta_items. len ( ) > 1 {
385
- return error (
386
- nested_meta_items. last ( ) . unwrap ( ) . span ( ) ,
387
- "multiple `cfg` predicates are specified" ,
388
- "" ,
389
- ) ;
390
- }
391
-
392
- match nested_meta_items[ 0 ] . meta_item ( ) {
393
- Some ( meta_item) => attr:: cfg_matches ( meta_item, self . sess , self . features ) ,
394
- None => error (
395
- nested_meta_items[ 0 ] . span ( ) ,
396
- "`cfg` predicate key cannot be a literal" ,
397
- "" ,
398
- ) ,
370
+ let span = meta_item. span ;
371
+ match meta_item. meta_item_list ( ) {
372
+ None => error ( span, "`cfg` is not followed by parentheses" , "cfg(/* predicate */)" ) ,
373
+ Some ( [ ] ) => error ( span, "`cfg` predicate is not specified" , "" ) ,
374
+ Some ( [ _, .., l] ) => error ( l. span ( ) , "multiple `cfg` predicates are specified" , "" ) ,
375
+ Some ( [ single] ) => match single. meta_item ( ) {
376
+ Some ( meta_item) => attr:: cfg_matches ( meta_item, self . sess , self . features ) ,
377
+ None => error ( single. span ( ) , "`cfg` predicate key cannot be a literal" , "" ) ,
378
+ } ,
399
379
}
400
380
} )
401
381
}
0 commit comments