Always evaluate all cfg predicate in all() and any()
This commit is contained in:
parent
cb4ee81ef5
commit
f57cc8ca5c
3 changed files with 55 additions and 2 deletions
|
@ -594,10 +594,18 @@ pub fn eval_condition(
|
|||
match cfg.name_or_empty() {
|
||||
sym::any => mis
|
||||
.iter()
|
||||
.any(|mi| eval_condition(mi.meta_item().unwrap(), sess, features, eval)),
|
||||
// We don't use any() here, because we want to evaluate all cfg condition
|
||||
// as eval_condition can (and does) extra checks
|
||||
.fold(false, |res, mi| {
|
||||
res | eval_condition(mi.meta_item().unwrap(), sess, features, eval)
|
||||
}),
|
||||
sym::all => mis
|
||||
.iter()
|
||||
.all(|mi| eval_condition(mi.meta_item().unwrap(), sess, features, eval)),
|
||||
// We don't use all() here, because we want to evaluate all cfg condition
|
||||
// as eval_condition can (and does) extra checks
|
||||
.fold(true, |res, mi| {
|
||||
res & eval_condition(mi.meta_item().unwrap(), sess, features, eval)
|
||||
}),
|
||||
sym::not => {
|
||||
if mis.len() != 1 {
|
||||
struct_span_err!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue