@@ -12,7 +12,7 @@ use rustc_parse::parser::{ForceCollect, Parser};
1212use rustc_parse:: { exp, parse_in} ;
1313use rustc_session:: Session ;
1414use rustc_session:: config:: ExpectedValues ;
15- use rustc_session:: lint:: builtin:: UNEXPECTED_CFGS ;
15+ use rustc_session:: lint:: builtin:: { EMPTY_CFG_PREDICATE , UNEXPECTED_CFGS } ;
1616use rustc_session:: parse:: { ParseSess , feature_err} ;
1717use rustc_span:: { ErrorGuaranteed , Span , Symbol , sym} ;
1818use thin_vec:: ThinVec ;
@@ -63,14 +63,42 @@ pub fn parse_cfg_entry<S: Stage>(
6363 } ;
6464 CfgEntry :: Not ( Box :: new ( parse_cfg_entry ( cx, single) ?) , list. span )
6565 }
66- Some ( sym:: any) => CfgEntry :: Any (
67- list. mixed ( ) . flat_map ( |sub_item| parse_cfg_entry ( cx, sub_item) ) . collect ( ) ,
68- list. span ,
69- ) ,
70- Some ( sym:: all) => CfgEntry :: All (
71- list. mixed ( ) . flat_map ( |sub_item| parse_cfg_entry ( cx, sub_item) ) . collect ( ) ,
72- list. span ,
73- ) ,
66+ Some ( sym:: any) => {
67+ if list. is_empty ( ) && !list. span . from_expansion ( ) {
68+ let span = meta. span ( ) ;
69+ cx. emit_lint (
70+ EMPTY_CFG_PREDICATE ,
71+ AttributeLintKind :: EmptyCfgPredictate {
72+ predicate_span : span,
73+ predicate : sym:: any,
74+ lit : false ,
75+ } ,
76+ span,
77+ ) ;
78+ }
79+ CfgEntry :: Any (
80+ list. mixed ( ) . flat_map ( |sub_item| parse_cfg_entry ( cx, sub_item) ) . collect ( ) ,
81+ list. span ,
82+ )
83+ }
84+ Some ( sym:: all) => {
85+ if list. is_empty ( ) && !list. span . from_expansion ( ) {
86+ let span = meta. span ( ) ;
87+ cx. emit_lint (
88+ EMPTY_CFG_PREDICATE ,
89+ AttributeLintKind :: EmptyCfgPredictate {
90+ predicate_span : span,
91+ predicate : sym:: all,
92+ lit : true ,
93+ } ,
94+ span,
95+ ) ;
96+ }
97+ CfgEntry :: All (
98+ list. mixed ( ) . flat_map ( |sub_item| parse_cfg_entry ( cx, sub_item) ) . collect ( ) ,
99+ list. span ,
100+ )
101+ }
74102 Some ( sym:: target) => parse_cfg_entry_target ( cx, list, meta. span ( ) ) ?,
75103 Some ( sym:: version) => parse_cfg_entry_version ( cx, list, meta. span ( ) ) ?,
76104 _ => {
0 commit comments