@@ -73,6 +73,13 @@ impl<'a> StringReader<'a> {
73
73
fn mk_sp ( & self , lo : BytePos , hi : BytePos ) -> Span {
74
74
unwrap_or ! ( self . override_span, Span :: new( lo, hi, NO_EXPANSION ) )
75
75
}
76
+ fn mk_ident ( & self , string : & str ) -> Ident {
77
+ let mut ident = Ident :: from_str ( string) ;
78
+ if let Some ( span) = self . override_span {
79
+ ident. ctxt = span. ctxt ( ) ;
80
+ }
81
+ ident
82
+ }
76
83
77
84
fn next_token ( & mut self ) -> TokenAndSpan where Self : Sized {
78
85
let res = self . try_next_token ( ) ;
@@ -1103,7 +1110,7 @@ impl<'a> StringReader<'a> {
1103
1110
token:: Underscore
1104
1111
} else {
1105
1112
// FIXME: perform NFKC normalization here. (Issue #2253)
1106
- token:: Ident ( Ident :: from_str ( string) )
1113
+ token:: Ident ( self . mk_ident ( string) )
1107
1114
}
1108
1115
} ) ) ;
1109
1116
}
@@ -1286,13 +1293,13 @@ impl<'a> StringReader<'a> {
1286
1293
// expansion purposes. See #12512 for the gory details of why
1287
1294
// this is necessary.
1288
1295
let ident = self . with_str_from ( start, |lifetime_name| {
1289
- Ident :: from_str ( & format ! ( "'{}" , lifetime_name) )
1296
+ self . mk_ident ( & format ! ( "'{}" , lifetime_name) )
1290
1297
} ) ;
1291
1298
1292
1299
// Conjure up a "keyword checking ident" to make sure that
1293
1300
// the lifetime name is not a keyword.
1294
1301
let keyword_checking_ident = self . with_str_from ( start, |lifetime_name| {
1295
- Ident :: from_str ( lifetime_name)
1302
+ self . mk_ident ( lifetime_name)
1296
1303
} ) ;
1297
1304
let keyword_checking_token = & token:: Ident ( keyword_checking_ident) ;
1298
1305
let last_bpos = self . pos ;
0 commit comments