Skip to content

Commit d4c3059

Browse files
marijnhgraydon
authored andcommitted
make lexer unicode-aware for strings and char literals
1 parent a045514 commit d4c3059

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

src/comp/front/lexer.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ impure fn new_reader(io.reader rdr, str filename) -> reader
7676
col += 1u;
7777
}
7878

79-
n = rdr.read_byte() as char;
79+
n = rdr.read_char();
8080
}
8181

8282
fn mark() {
@@ -204,8 +204,8 @@ impure fn new_reader(io.reader rdr, str filename) -> reader
204204
reserved.insert("m128", ()); // IEEE 754-2008 'decimal128'
205205
reserved.insert("dec", ()); // One of m32, m64, m128
206206

207-
ret reader(rdr, filename, rdr.read_byte() as char,
208-
rdr.read_byte() as char, 1u, 0u, 1u, 0u, keywords, reserved);
207+
ret reader(rdr, filename, rdr.read_char(),
208+
rdr.read_char(), 1u, 0u, 1u, 0u, keywords, reserved);
209209
}
210210

211211

@@ -505,7 +505,7 @@ impure fn next_token(reader rdr) -> token.token {
505505

506506
if (is_alpha(c) || c == '_') {
507507
while (is_alnum(c) || c == '_') {
508-
_str.push_byte(accum_str, (c as u8));
508+
_str.push_char(accum_str, c);
509509
rdr.bump();
510510
c = rdr.curr();
511511
}
@@ -692,7 +692,7 @@ impure fn next_token(reader rdr) -> token.token {
692692
}
693693
}
694694
case (_) {
695-
_str.push_byte(accum_str, rdr.curr() as u8);
695+
_str.push_char(accum_str, rdr.curr());
696696
}
697697
}
698698
rdr.bump();

src/comp/front/token.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,9 @@ fn to_str(token t) -> str {
303303
ret "\"" + s + "\"";
304304
}
305305
case (LIT_CHAR(?c)) {
306-
// FIXME: escape and encode.
306+
// FIXME: escape.
307307
auto tmp = "'";
308-
_str.push_byte(tmp, c as u8);
308+
_str.push_char(tmp, c);
309309
_str.push_byte(tmp, '\'' as u8);
310310
ret tmp;
311311
}

src/comp/pretty/pprust.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,6 @@ impure fn print_maybe_parens(ps s, @ast.expr expr, int outer_prec) {
718718
if (add_them) {pclose(s);}
719719
}
720720

721-
// TODO non-ascii
722721
fn escape_str(str st, char to_escape) -> str {
723722
let str out = "";
724723
auto len = _str.byte_len(st);

0 commit comments

Comments
 (0)