about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2015-07-10 22:31:44 +0300
committerSimonas Kazlauskas <git@kazlauskas.me>2015-07-13 02:09:22 +0300
commit4d65ef45491b62fbecdb9a24822c216aa96bb34e (patch)
tree0e45af275b2db492e30f4a99c86abe9e2023fdc3 /src/libsyntax
parentd22f189da13f8ffb3c9227a038615608e99a6211 (diff)
downloadrust-4d65ef45491b62fbecdb9a24822c216aa96bb34e.tar.gz
rust-4d65ef45491b62fbecdb9a24822c216aa96bb34e.zip
Tell unicode escapes can’t be used as bytes earlier/more
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/lexer/mod.rs30
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();