diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index 527f69270104a602459ed129ee189c47abd3ee69..495d1372d79bfa669fb88fdb0e3ebefbd32dbf21 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -886,10 +886,11 @@ fn parse_bottom_expr(p: &parser) -> @ast::expr { p.bump(); alt p.peek() { token::LIT_STR(s) { + let sp = p.get_span(); p.bump(); let lit = @{node: ast::lit_str(p.get_str(s), ast::sk_unique), - span: p.get_span()}; + span: sp}; ex = ast::expr_lit(lit); } _ { ex = ast::expr_uniq(parse_expr(p)); } diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs index f0848fbdce5142fda10053890a5f385f99c27cd4..2165be225b890c19fa7aa261c8a0faf7175393d2 100644 --- a/src/comp/syntax/print/pprust.rs +++ b/src/comp/syntax/print/pprust.rs @@ -1468,7 +1468,17 @@ fn print_literal(s: &ps, lit: &@ast::lit) { maybe_print_comment(s, lit.span.lo); alt next_lit(s) { some(lt) { - if lt.pos == lit.span.lo { word(s.s, lt.lit); s.cur_lit += 1u; ret; } + if lt.pos == lit.span.lo { + // FIXME: This is a hack until istrs replace strings, since + // istrs are prefixed with a token that is not part of the literal + alt lit.node { + ast::lit_str(_, ast::sk_unique.) { word(s.s, "~"); } + _ { } + } + word(s.s, lt.lit); + s.cur_lit += 1u; + ret; + } } _ { } }