about summary refs log tree commit diff
path: root/compiler/rustc_interface/src
diff options
context:
space:
mode:
authorUrgau <urgau@numericable.fr>2023-05-06 18:26:53 +0200
committerUrgau <urgau@numericable.fr>2023-05-06 18:40:47 +0200
commitf4ca42f573e3a8bd9bb5099efa0285855b77367f (patch)
tree8a5288d1d17c6e1fe09e9d3953723ac93f37da0e /compiler/rustc_interface/src
parent4b94c232192b0fa0314b5afa18e366356e210c4c (diff)
downloadrust-f4ca42f573e3a8bd9bb5099efa0285855b77367f.tar.gz
rust-f4ca42f573e3a8bd9bb5099efa0285855b77367f.zip
Fix --check-cfg bug with args order when parsing
Diffstat (limited to 'compiler/rustc_interface/src')
-rw-r--r--compiler/rustc_interface/src/interface.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs
index 9d9f4ee13f4..51354c2b127 100644
--- a/compiler/rustc_interface/src/interface.rs
+++ b/compiler/rustc_interface/src/interface.rs
@@ -173,12 +173,21 @@ pub fn parse_check_cfg(specs: Vec<String>) -> CheckCfg {
                                         let expected_values = check_cfg
                                             .expecteds
                                             .entry(ident.name.to_string())
+                                            .and_modify(|expected_values| match expected_values {
+                                                ExpectedValues::Some(_) => {}
+                                                ExpectedValues::Any => {
+                                                    // handle the case where names(...) was done
+                                                    // before values by changing to a list
+                                                    *expected_values =
+                                                        ExpectedValues::Some(FxHashSet::default());
+                                                }
+                                            })
                                             .or_insert_with(|| {
                                                 ExpectedValues::Some(FxHashSet::default())
                                             });
 
                                         let ExpectedValues::Some(expected_values) = expected_values else {
-                                            bug!("shoudn't be possible")
+                                            bug!("`expected_values` should be a list a values")
                                         };
 
                                         for val in values {