-
Notifications
You must be signed in to change notification settings - Fork 12.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add diagnostic for raw identifiers in format string
- Loading branch information
Lukas Markeffsky
committed
Sep 6, 2023
1 parent
a0c28cd
commit d990eee
Showing
6 changed files
with
158 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|