File tree 2 files changed +14
-8
lines changed
2 files changed +14
-8
lines changed Original file line number Diff line number Diff line change 1
1
use crate :: base:: ExtCtxt ;
2
2
3
+ use rustc_parse:: lexer:: nfc_normalize;
3
4
use rustc_parse:: { nt_to_tokenstream, parse_stream_from_source_str} ;
4
5
use syntax:: ast;
5
6
use syntax:: print:: pprust;
@@ -327,6 +328,7 @@ impl Ident {
327
328
}
328
329
}
329
330
fn new ( sym : Symbol , is_raw : bool , span : Span ) -> Ident {
331
+ let sym = nfc_normalize ( & sym. as_str ( ) ) ;
330
332
let string = sym. as_str ( ) ;
331
333
if !Self :: is_valid ( & string) {
332
334
panic ! ( "`{:?}` is not a valid identifier" , string)
Original file line number Diff line number Diff line change @@ -471,16 +471,9 @@ impl<'a> StringReader<'a> {
471
471
472
472
/// As symbol_from, with the text normalized into Unicode NFC form.
473
473
fn nfc_symbol_from ( & self , start : BytePos ) -> Symbol {
474
- use unicode_normalization:: { is_nfc_quick, IsNormalized , UnicodeNormalization } ;
475
474
debug ! ( "taking an normalized ident from {:?} to {:?}" , start, self . pos) ;
476
475
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
- }
476
+ nfc_normalize ( sym)
484
477
}
485
478
486
479
/// Slice of the source text spanning from `start` up to but excluding `end`.
@@ -651,3 +644,14 @@ impl<'a> StringReader<'a> {
651
644
}
652
645
}
653
646
}
647
+
648
+ pub fn nfc_normalize ( string : & str ) -> Symbol {
649
+ use unicode_normalization:: { is_nfc_quick, IsNormalized , UnicodeNormalization } ;
650
+ match is_nfc_quick ( string. chars ( ) ) {
651
+ IsNormalized :: Yes => Symbol :: intern ( string) ,
652
+ _ => {
653
+ let normalized_str: String = string. chars ( ) . nfc ( ) . collect ( ) ;
654
+ Symbol :: intern ( & normalized_str)
655
+ }
656
+ }
657
+ }
You can’t perform that action at this time.
0 commit comments