diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2018-12-27 11:21:47 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2018-12-31 09:44:58 -0800 |
| commit | b416f1398fa19b4f1fd9bc6418ea32e340d8379c (patch) | |
| tree | fcbcc6761799171dd0377c4e5c5b48289d3cf176 /src/libsyntax | |
| parent | 7edc434b72e6e1b46b625c3019e8227dc7a8e2e8 (diff) | |
| download | rust-b416f1398fa19b4f1fd9bc6418ea32e340d8379c.tar.gz rust-b416f1398fa19b4f1fd9bc6418ea32e340d8379c.zip | |
Use structured suggestion for braceless unicode escape squence
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/lexer/mod.rs | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index d13de002968..fb46f7a08b9 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -945,12 +945,36 @@ impl<'a> StringReader<'a> { self.scan_unicode_escape(delim) && !ascii_only } else { let span = self.mk_sp(start, self.pos); - self.sess.span_diagnostic - .struct_span_err(span, "incorrect unicode escape sequence") - .span_help(span, - "format of unicode escape sequences is \ - `\\u{…}`") - .emit(); + let mut suggestion = "\\u{".to_owned(); + let mut err = self.sess.span_diagnostic.struct_span_err( + span, + "incorrect unicode escape sequence", + ); + let mut i = 0; + while let (Some(ch), true) = (self.ch, i < 6) { + if ch.is_digit(16) { + suggestion.push(ch); + self.bump(); + i += 1; + } else { + break; + } + } + if i != 0 { + suggestion.push('}'); + err.span_suggestion_with_applicability( + self.mk_sp(start, self.pos), + "format of unicode escape sequences uses braces", + suggestion, + Applicability::MaybeIncorrect, + ); + } else { + err.span_help( + span, + "format of unicode escape sequences is `\\u{…}`", + ); + } + err.emit(); false }; if ascii_only { |
