summaryrefslogtreecommitdiffstats
path: root/tests/ui/fmt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/fmt')
-rw-r--r--tests/ui/fmt/raw-idents.rs17
-rw-r--r--tests/ui/fmt/raw-idents.stderr44
2 files changed, 61 insertions, 0 deletions
diff --git a/tests/ui/fmt/raw-idents.rs b/tests/ui/fmt/raw-idents.rs
new file mode 100644
index 000000000..29a74c55a
--- /dev/null
+++ b/tests/ui/fmt/raw-idents.rs
@@ -0,0 +1,17 @@
+// Regression test for https://github.com/rust-lang/rust/issues/115466
+
+// The "identifier" in format strings is parsed as an IDENTIFIER_OR_KEYWORD, not an IDENTIFIER.
+// Test that there is an actionable diagnostic if a RAW_IDENTIFIER is used instead.
+
+fn main() {
+ let r#type = "foobar";
+ println!("It is {r#type}"); //~ ERROR: invalid format string: raw identifiers are not supported
+ println!(r##"It still is {r#type}"##); //~ ERROR: invalid format string: raw identifiers are not supported
+ println!(concat!("{r#", "type}")); //~ ERROR: invalid format string: raw identifiers are not supported
+ println!("{\x72\x23type:?}"); //~ ERROR: invalid format string: raw identifiers are not supported
+
+ // OK
+ println!("{type}");
+ println!("{let}", let = r#type);
+ println!("{let}", r#let = r#type);
+}
diff --git a/tests/ui/fmt/raw-idents.stderr b/tests/ui/fmt/raw-idents.stderr
new file mode 100644
index 000000000..2ddc114d2
--- /dev/null
+++ b/tests/ui/fmt/raw-idents.stderr
@@ -0,0 +1,44 @@
+error: invalid format string: raw identifiers are not supported
+ --> $DIR/raw-idents.rs:8:22
+ |
+LL | println!("It is {r#type}");
+ | --^^^^
+ | |
+ | raw identifier used here in format string
+ | help: remove the `r#`
+ |
+ = note: identifiers in format strings can be keywords and don't need to be prefixed with `r#`
+
+error: invalid format string: raw identifiers are not supported
+ --> $DIR/raw-idents.rs:9:31
+ |
+LL | println!(r##"It still is {r#type}"##);
+ | --^^^^
+ | |
+ | raw identifier used here in format string
+ | help: remove the `r#`
+ |
+ = note: identifiers in format strings can be keywords and don't need to be prefixed with `r#`
+
+error: invalid format string: raw identifiers are not supported
+ --> $DIR/raw-idents.rs:10:14
+ |
+LL | println!(concat!("{r#", "type}"));
+ | ^^^^^^^^^^^^^^^^^^^^^^^ raw identifier used here in format string
+ |
+ = note: identifiers in format strings can be keywords and don't need to be prefixed with `r#`
+ = note: this error originates in the macro `concat` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: invalid format string: raw identifiers are not supported
+ --> $DIR/raw-idents.rs:11:16
+ |
+LL | println!("{\x72\x23type:?}");
+ | --------^^^^
+ | |
+ | raw identifier used here in format string
+ | help: remove the `r#`
+ |
+ = note: identifiers in format strings can be keywords and don't need to be prefixed with `r#`
+
+error: aborting due to 4 previous errors
+