@@ -132,9 +132,9 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check
132
132
rustc_span:: create_default_session_if_not_set_then ( move |_| {
133
133
// If any --check-cfg is passed then exhaustive_values and exhaustive_names
134
134
// are enabled by default.
135
- let exhaustive_names = !specs. is_empty ( ) ;
136
- let exhaustive_values = !specs. is_empty ( ) ;
137
- let mut check_cfg = CheckCfg { exhaustive_names , exhaustive_values , .. CheckCfg :: default ( ) } ;
135
+ let mut exhaustive_names = !specs. is_empty ( ) ;
136
+ let mut exhaustive_values = !specs. is_empty ( ) ;
137
+ let mut expecteds = FxHashMap :: default ( ) ;
138
138
139
139
let mut old_syntax = None ;
140
140
for s in specs {
@@ -162,17 +162,16 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check
162
162
if meta_item. has_name ( sym:: names) {
163
163
// defaults are flipped for the old syntax
164
164
if old_syntax == None {
165
- check_cfg . exhaustive_names = false ;
166
- check_cfg . exhaustive_values = false ;
165
+ // exhaustive_names = false; // overwritten immediately below
166
+ exhaustive_values = false ;
167
167
}
168
168
old_syntax = Some ( true ) ;
169
169
170
- check_cfg . exhaustive_names = true ;
170
+ exhaustive_names = true ;
171
171
for arg in args {
172
172
if arg. is_word ( ) && arg. ident ( ) . is_some ( ) {
173
173
let ident = arg. ident ( ) . expect ( "multi-segment cfg key" ) ;
174
- check_cfg
175
- . expecteds
174
+ expecteds
176
175
. entry ( ident. name . to_string ( ) )
177
176
. or_insert ( ExpectedValues :: Any ) ;
178
177
} else {
@@ -182,16 +181,15 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check
182
181
} else if meta_item. has_name ( sym:: values) {
183
182
// defaults are flipped for the old syntax
184
183
if old_syntax == None {
185
- check_cfg . exhaustive_names = false ;
186
- check_cfg . exhaustive_values = false ;
184
+ exhaustive_names = false ;
185
+ exhaustive_values = false ;
187
186
}
188
187
old_syntax = Some ( true ) ;
189
188
190
189
if let Some ( ( name, values) ) = args. split_first ( ) {
191
190
if name. is_word ( ) && name. ident ( ) . is_some ( ) {
192
191
let ident = name. ident ( ) . expect ( "multi-segment cfg key" ) ;
193
- let expected_values = check_cfg
194
- . expecteds
192
+ let expected_values = expecteds
195
193
. entry ( ident. name . to_string ( ) )
196
194
. and_modify ( |expected_values| match expected_values {
197
195
ExpectedValues :: Some ( _) => { }
@@ -232,7 +230,7 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check
232
230
) ;
233
231
}
234
232
} else if args. is_empty ( ) {
235
- check_cfg . exhaustive_values = true ;
233
+ exhaustive_values = true ;
236
234
} else {
237
235
expected_error ( ) ;
238
236
}
@@ -322,11 +320,10 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check
322
320
error ! ( "`cfg(any())` can only be provided in isolation" ) ;
323
321
}
324
322
325
- check_cfg . exhaustive_names = false ;
323
+ exhaustive_names = false ;
326
324
} else {
327
325
for name in names {
328
- check_cfg
329
- . expecteds
326
+ expecteds
330
327
. entry ( name. to_string ( ) )
331
328
. and_modify ( |v| match v {
332
329
ExpectedValues :: Some ( v)
@@ -366,7 +363,7 @@ pub fn parse_check_cfg(handler: &EarlyErrorHandler, specs: Vec<String>) -> Check
366
363
}
367
364
}
368
365
369
- check_cfg
366
+ CheckCfg { exhaustive_names , exhaustive_values , expecteds }
370
367
} )
371
368
}
372
369
0 commit comments