@@ -347,7 +347,13 @@ impl<'a> StripUnconfigured<'a> {
347347 if !is_cfg ( attr) {
348348 return true ;
349349 }
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+ } ;
351357 let error = |span, msg, suggestion : & str | {
352358 let mut err = self . sess . span_diagnostic . struct_span_err ( span, msg) ;
353359 if !suggestion. is_empty ( ) {
@@ -361,41 +367,15 @@ impl<'a> StripUnconfigured<'a> {
361367 err. emit ( ) ;
362368 true
363369 } ;
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+ } ,
399379 }
400380 } )
401381 }
0 commit comments