diff options
| author | Erin Petra Sofiya Moon <emoon@starry.com> | 2022-02-14 14:21:43 -0500 |
|---|---|---|
| committer | Erin Petra Sofiya Moon <emoon@starry.com> | 2022-02-14 15:11:38 -0500 |
| commit | e59cda9ee1b9fab3fe966ea7e4b12c14b1f85789 (patch) | |
| tree | a731617118a0361d343c6e7d9c48f84416cc3f33 /compiler/rustc_parse | |
| parent | 52dd59ed2154f4158ae37e6994b678a6249a7bb0 (diff) | |
| download | rust-e59cda9ee1b9fab3fe966ea7e4b12c14b1f85789.tar.gz rust-e59cda9ee1b9fab3fe966ea7e4b12c14b1f85789.zip | |
suggest using raw string literals when invalid escapes appear
i'd guess about 70% of "bad escape" cases occur when someone meant to use a raw string literal because they're passing it directly to Regex::new(). this emits an advisory (Applicability::MaybeIncorrect) help: suggestion to the user that they use an r"" string, on top of the normal notes about looking at the string literal documentation/spec.
Diffstat (limited to 'compiler/rustc_parse')
| -rw-r--r-- | compiler/rustc_parse/src/lexer/unescape_error_reporting.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs b/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs index 7f68112a427..a41956c58f0 100644 --- a/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs +++ b/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs @@ -185,6 +185,15 @@ pub(crate) fn emit_unescape_error( version control settings", ); } else { + if !mode.is_bytes() { + diag.span_suggestion( + span_with_quotes, + "if you meant to write a literal backslash (perhaps escaping in a regular expression), consider a raw string literal", + format!("r\"{}\"", lit), + Applicability::MaybeIncorrect, + ); + } + diag.help( "for more information, visit \ <https://static.rust-lang.org/doc/master/reference.html#literals>", |
