about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_interface/src/interface.rs11
-rw-r--r--src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs2
-rw-r--r--src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr2
-rw-r--r--src/test/ui/conditional-compilation/cfg-arg-invalid-9.rs4
-rw-r--r--src/test/ui/conditional-compilation/cfg-arg-invalid-9.stderr2
5 files changed, 18 insertions, 3 deletions
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs
index 3804e100307..26343561959 100644
--- a/compiler/rustc_interface/src/interface.rs
+++ b/compiler/rustc_interface/src/interface.rs
@@ -124,7 +124,16 @@ pub fn parse_cfgspecs(cfgspecs: Vec<String>) -> FxHashSet<(String, Option<String
                     Err(errs) => errs.into_iter().for_each(|mut err| err.cancel()),
                 }
 
-                error!(r#"expected `key` or `key="value"`"#);
+                // If the user tried to use a key="value" flag, but is missing the quotes, provide
+                // a hint about how to resolve this.
+                if s.contains("=") && !s.contains("=\"") && !s.ends_with("\"") {
+                    error!(concat!(
+                        r#"expected `key` or `key="value"`, ensure escaping is appropriate"#,
+                        r#" for your shell, try 'key="value"' or key=\"value\""#
+                    ));
+                } else {
+                    error!(r#"expected `key` or `key="value"`"#);
+                }
             })
             .collect::<CrateConfig>();
         cfg.into_iter().map(|(a, b)| (a.to_string(), b.map(|b| b.to_string()))).collect()
diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs b/src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs
index 36dd78dd2b1..d20e79b9db3 100644
--- a/src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs
+++ b/src/test/ui/conditional-compilation/cfg-arg-invalid-1.rs
@@ -1,3 +1,3 @@
 // compile-flags: --cfg a(b=c)
-// error-pattern: invalid `--cfg` argument: `a(b=c)` (expected `key` or `key="value"`)
+// error-pattern: invalid `--cfg` argument: `a(b=c)` (expected `key` or `key="value"`, ensure escaping is appropriate for your shell, try 'key="value"' or key=\"value\")
 fn main() {}
diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr b/src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr
index 1e7922a9ff1..3a12e978680 100644
--- a/src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr
+++ b/src/test/ui/conditional-compilation/cfg-arg-invalid-1.stderr
@@ -1,2 +1,2 @@
-error: invalid `--cfg` argument: `a(b=c)` (expected `key` or `key="value"`)
+error: invalid `--cfg` argument: `a(b=c)` (expected `key` or `key="value"`, ensure escaping is appropriate for your shell, try 'key="value"' or key=\"value\")
 
diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-9.rs b/src/test/ui/conditional-compilation/cfg-arg-invalid-9.rs
new file mode 100644
index 00000000000..628b335c873
--- /dev/null
+++ b/src/test/ui/conditional-compilation/cfg-arg-invalid-9.rs
@@ -0,0 +1,4 @@
+// Test for missing quotes around value, issue #66450.
+// compile-flags: --cfg key=value
+// error-pattern: invalid `--cfg` argument: `key=value` (expected `key` or `key="value"`, ensure escaping is appropriate for your shell, try 'key="value"' or key=\"value\")
+fn main() {}
diff --git a/src/test/ui/conditional-compilation/cfg-arg-invalid-9.stderr b/src/test/ui/conditional-compilation/cfg-arg-invalid-9.stderr
new file mode 100644
index 00000000000..985b5252258
--- /dev/null
+++ b/src/test/ui/conditional-compilation/cfg-arg-invalid-9.stderr
@@ -0,0 +1,2 @@
+error: invalid `--cfg` argument: `key=value` (expected `key` or `key="value"`, ensure escaping is appropriate for your shell, try 'key="value"' or key=\"value\")
+