Skip to content

Commit 3d6afbe

Browse files
committed
Show better error message for incorrect unicode escape sequences syntax
1 parent f9274d6 commit 3d6afbe

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/libsyntax/parse/lexer/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,16 @@ impl<'a> StringReader<'a> {
742742
valid
743743
}
744744
}
745+
'u' => {
746+
self.err_span_(
747+
escaped_pos,
748+
self.last_pos,
749+
"`\\u` in string literals start unicode escape sequences; \
750+
for example, use `\\u{30a2}` to specify codepoint U+30A2, \
751+
or did you mean `\\\\u`?"
752+
);
753+
false
754+
}
745755
'\n' if delim == '"' => {
746756
self.consume_whitespace();
747757
true
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// Test that a covariant struct permits the lifetime of a reference to
12+
// be shortened.
13+
14+
fn main() { "\u123"; }
15+
//~^ error: `\u` in string literals start unicode escape sequences; for example, use `\u{30a2}`

0 commit comments

Comments
 (0)