@@ -538,19 +538,19 @@ fn ident_continue(c: char) -> bool {
538
538
// EFFECT: advances the input past that token
539
539
// EFFECT: updates the interner
540
540
fn next_token_inner ( rdr : @mut StringReader ) -> token:: Token {
541
- let mut accum_str = ~"";
542
541
let mut c = rdr. curr ;
543
542
if ident_start ( c) {
544
- while ident_continue ( c ) {
545
- str :: push_char ( & mut accum_str , c ) ;
543
+ let start = byte_offset ( rdr , rdr . last_pos ) ;
544
+ while ident_continue ( rdr . curr ) {
546
545
bump ( rdr) ;
547
- c = rdr. curr ;
548
546
}
549
- if accum_str == ~"_" { return token:: UNDERSCORE ; }
550
- let is_mod_name = c == ':' && nextch ( rdr) == ':' ;
547
+ let string = get_str_from ( rdr, start) ;
548
+
549
+ if "_" == string { return token:: UNDERSCORE ; }
550
+ let is_mod_name = rdr. curr == ':' && nextch ( rdr) == ':' ;
551
551
552
552
// FIXME: perform NFKC normalization here. (Issue #2253)
553
- return token:: IDENT ( str_to_ident ( accum_str ) , is_mod_name) ;
553
+ return token:: IDENT ( str_to_ident ( string ) , is_mod_name) ;
554
554
}
555
555
if is_dec_digit ( c) {
556
556
return scan_number ( c, rdr) ;
@@ -690,6 +690,7 @@ fn next_token_inner(rdr: @mut StringReader) -> token::Token {
690
690
return token:: LIT_INT ( c2 as i64 , ast:: ty_char) ;
691
691
}
692
692
'"' => {
693
+ let mut accum_str = ~"";
693
694
let n = byte_offset ( rdr, rdr. last_pos ) ;
694
695
bump ( rdr) ;
695
696
while rdr. curr != '"' {
0 commit comments