@@ -220,7 +220,7 @@ impl<'a> StringReader<'a> {
220
220
if is_raw_ident {
221
221
ident_start = ident_start + BytePos ( 2 ) ;
222
222
}
223
- let sym = self . nfc_symbol_from ( ident_start) ;
223
+ let sym = nfc_normalize ( self . str_from ( ident_start) ) ;
224
224
if is_raw_ident {
225
225
let span = self . mk_sp ( start, self . pos ) ;
226
226
if !sym. can_be_raw ( ) {
@@ -469,20 +469,6 @@ impl<'a> StringReader<'a> {
469
469
Symbol :: intern ( self . str_from_to ( start, end) )
470
470
}
471
471
472
- /// As symbol_from, with the text normalized into Unicode NFC form.
473
- fn nfc_symbol_from ( & self , start : BytePos ) -> Symbol {
474
- use unicode_normalization:: { is_nfc_quick, IsNormalized , UnicodeNormalization } ;
475
- debug ! ( "taking an normalized ident from {:?} to {:?}" , start, self . pos) ;
476
- let sym = self . str_from ( start) ;
477
- match is_nfc_quick ( sym. chars ( ) ) {
478
- IsNormalized :: Yes => Symbol :: intern ( sym) ,
479
- _ => {
480
- let sym_str: String = sym. chars ( ) . nfc ( ) . collect ( ) ;
481
- Symbol :: intern ( & sym_str)
482
- }
483
- }
484
- }
485
-
486
472
/// Slice of the source text spanning from `start` up to but excluding `end`.
487
473
fn str_from_to ( & self , start : BytePos , end : BytePos ) -> & str {
488
474
& self . src [ self . src_index ( start) ..self . src_index ( end) ]
@@ -651,3 +637,14 @@ impl<'a> StringReader<'a> {
651
637
}
652
638
}
653
639
}
640
+
641
+ pub fn nfc_normalize ( string : & str ) -> Symbol {
642
+ use unicode_normalization:: { is_nfc_quick, IsNormalized , UnicodeNormalization } ;
643
+ match is_nfc_quick ( string. chars ( ) ) {
644
+ IsNormalized :: Yes => Symbol :: intern ( string) ,
645
+ _ => {
646
+ let normalized_str: String = string. chars ( ) . nfc ( ) . collect ( ) ;
647
+ Symbol :: intern ( & normalized_str)
648
+ }
649
+ }
650
+ }
0 commit comments