@@ -73,6 +73,13 @@ impl<'a> StringReader<'a> {
7373 fn mk_sp ( & self , lo : BytePos , hi : BytePos ) -> Span {
7474 unwrap_or ! ( self . override_span, Span :: new( lo, hi, NO_EXPANSION ) )
7575 }
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+ }
7683
7784 fn next_token ( & mut self ) -> TokenAndSpan where Self : Sized {
7885 let res = self . try_next_token ( ) ;
@@ -1103,7 +1110,7 @@ impl<'a> StringReader<'a> {
11031110 token:: Underscore
11041111 } else {
11051112 // FIXME: perform NFKC normalization here. (Issue #2253)
1106- token:: Ident ( Ident :: from_str ( string) )
1113+ token:: Ident ( self . mk_ident ( string) )
11071114 }
11081115 } ) ) ;
11091116 }
@@ -1286,13 +1293,13 @@ impl<'a> StringReader<'a> {
12861293 // expansion purposes. See #12512 for the gory details of why
12871294 // this is necessary.
12881295 let ident = self . with_str_from ( start, |lifetime_name| {
1289- Ident :: from_str ( & format ! ( "'{}" , lifetime_name) )
1296+ self . mk_ident ( & format ! ( "'{}" , lifetime_name) )
12901297 } ) ;
12911298
12921299 // Conjure up a "keyword checking ident" to make sure that
12931300 // the lifetime name is not a keyword.
12941301 let keyword_checking_ident = self . with_str_from ( start, |lifetime_name| {
1295- Ident :: from_str ( lifetime_name)
1302+ self . mk_ident ( lifetime_name)
12961303 } ) ;
12971304 let keyword_checking_token = & token:: Ident ( keyword_checking_ident) ;
12981305 let last_bpos = self . pos ;
0 commit comments