diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2015-07-10 22:31:44 +0300 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2015-07-13 02:09:22 +0300 |
| commit | 4d65ef45491b62fbecdb9a24822c216aa96bb34e (patch) | |
| tree | 0e45af275b2db492e30f4a99c86abe9e2023fdc3 /src/libsyntax/parse | |
| parent | d22f189da13f8ffb3c9227a038615608e99a6211 (diff) | |
| download | rust-4d65ef45491b62fbecdb9a24822c216aa96bb34e.tar.gz rust-4d65ef45491b62fbecdb9a24822c216aa96bb34e.zip | |
Tell unicode escapes can’t be used as bytes earlier/more
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer/mod.rs | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index edaac3b09ba..b6a3788dacc 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -738,26 +738,24 @@ impl<'a> StringReader<'a> { return match e { 'n' | 'r' | 't' | '\\' | '\'' | '"' | '0' => true, 'x' => self.scan_byte_escape(delim, !ascii_only), - 'u' if self.curr_is('{') => { - let valid = self.scan_unicode_escape(delim); - if valid && ascii_only { - self.err_span_( - start, - self.last_pos, + 'u' => { + let valid = if self.curr_is('{') { + self.scan_unicode_escape(delim) && !ascii_only + } else { + self.err_span_(start, self.last_pos, + "incorrect unicode escape sequence"); + self.help_span_(start, self.last_pos, + "format of unicode escape sequences is `\\u{…}`"); + false + }; + if ascii_only { + self.err_span_(start, self.last_pos, "unicode escape sequences cannot be used as a byte or in \ a byte string" ); - false - } else { - valid } - } - 'u' if !ascii_only => { - self.err_span_(start, self.last_pos, - "incomplete unicode escape sequence"); - self.help_span_(start, self.last_pos, - "format of unicode escape sequences is `\\u{…}`"); - false + valid + } '\n' if delim == '"' => { self.consume_whitespace(); |
