diff options
| author | beetrees <b@beetr.ee> | 2023-05-17 02:54:13 +0100 |
|---|---|---|
| committer | beetrees <b@beetr.ee> | 2023-08-16 21:51:57 +0100 |
| commit | 072d8c8bbc57358ffd6fa66f6a12365464de185f (patch) | |
| tree | 73e87c0f9b3b2414e9b836ce451d1d32375e854d /compiler/rustc_parse/src/lexer | |
| parent | ce01f4d2e04f785018acd881161e58394ed3d522 (diff) | |
| download | rust-072d8c8bbc57358ffd6fa66f6a12365464de185f.tar.gz rust-072d8c8bbc57358ffd6fa66f6a12365464de185f.zip | |
Fix suggestion for attempting to define a string with single quotes
Diffstat (limited to 'compiler/rustc_parse/src/lexer')
| -rw-r--r-- | compiler/rustc_parse/src/lexer/unescape_error_reporting.rs | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs b/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs index 446472d1294..b659c40b233 100644 --- a/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs +++ b/compiler/rustc_parse/src/lexer/unescape_error_reporting.rs @@ -80,20 +80,14 @@ pub(crate) fn emit_unescape_error( let sugg = sugg.unwrap_or_else(|| { let prefix = mode.prefix_noraw(); let mut escaped = String::with_capacity(lit.len()); - let mut chrs = lit.chars().peekable(); - while let Some(first) = chrs.next() { - match (first, chrs.peek()) { - ('\\', Some('"')) => { - escaped.push('\\'); - escaped.push('"'); - chrs.next(); - } - ('"', _) => { - escaped.push('\\'); - escaped.push('"') - } - (c, _) => escaped.push(c), - }; + let mut in_escape = false; + for c in lit.chars() { + match c { + '\\' => in_escape = !in_escape, + '"' if !in_escape => escaped.push('\\'), + _ => in_escape = false, + } + escaped.push(c); } let sugg = format!("{prefix}\"{escaped}\""); MoreThanOneCharSugg::Quotes { |
