diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-05-31 15:31:13 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-05-31 15:32:29 -0700 |
| commit | 57f399bd638c211005e8565609e928db33ebf864 (patch) | |
| tree | 05d9289af9058f1509f976c1c73e722ab87cec1b /src/libsyntax/parse | |
| parent | c2ce2741a773b94d3a8f7293cb598322bc61f89d (diff) | |
| download | rust-57f399bd638c211005e8565609e928db33ebf864.tar.gz rust-57f399bd638c211005e8565609e928db33ebf864.zip | |
Implement 2 kinds of char / str escaping. Use in rustc. Close #2306.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 13 |
2 files changed, 6 insertions, 8 deletions
diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index 63dc85e865d..bef5f6d1fd8 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -434,6 +434,7 @@ fn next_token_inner(rdr: reader) -> token::token { 't' { c2 = '\t'; } '\\' { c2 = '\\'; } '\'' { c2 = '\''; } + '"' { c2 = '"'; } 'x' { c2 = scan_numeric_escape(rdr, 2u); } 'u' { c2 = scan_numeric_escape(rdr, 4u); } 'U' { c2 = scan_numeric_escape(rdr, 8u); } diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 1c6f240cf82..044509a5144 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -122,11 +122,7 @@ fn to_str(in: interner<str>, t: token) -> str { /* Literals */ LIT_INT(c, ast::ty_char) { - // FIXME: escape. - let mut tmp = "'"; - str::push_char(tmp, c as char); - str::push_char(tmp, '\''); - ret tmp; + ret "'" + char::escape_default(c as char) + "'"; } LIT_INT(i, t) { ret int::to_str(i as int, 10u) + ast_util::int_ty_to_str(t); @@ -138,10 +134,11 @@ fn to_str(in: interner<str>, t: token) -> str { ret interner::get::<str>(in, s) + ast_util::float_ty_to_str(t); } - LIT_STR(s) { // FIXME: escape. - ret "\"" + interner::get::<str>(in, s) + "\""; + LIT_STR(s) { + ret "\"" + + str::escape_default(interner::get::<str>(in, s)) + + "\""; } - /* Name components */ IDENT(s, _) { ret interner::get::<str>(in, s); |
