@@ -236,11 +236,12 @@ impl FromInternal<(TokenStream, &mut Rustc<'_, '_>)> for Vec<TokenTree<TokenStre
236
236
}
237
237
}
238
238
239
- impl ToInternal < TokenStream > for TokenTree < TokenStream , Span , Symbol > {
239
+ impl ToInternal < TokenStream > for ( TokenTree < TokenStream , Span , Symbol > , & mut Rustc < ' _ , ' _ > ) {
240
240
fn to_internal ( self ) -> TokenStream {
241
241
use rustc_ast:: token:: * ;
242
242
243
- let ( ch, joint, span) = match self {
243
+ let ( tree, rustc) = self ;
244
+ let ( ch, joint, span) = match tree {
244
245
TokenTree :: Punct ( Punct { ch, joint, span } ) => ( ch, joint, span) ,
245
246
TokenTree :: Group ( Group { delimiter, stream, span : DelimSpan { open, close, .. } } ) => {
246
247
return tokenstream:: TokenTree :: Delimited (
@@ -251,6 +252,7 @@ impl ToInternal<TokenStream> for TokenTree<TokenStream, Span, Symbol> {
251
252
. into ( ) ;
252
253
}
253
254
TokenTree :: Ident ( self :: Ident { sym, is_raw, span } ) => {
255
+ rustc. sess ( ) . symbol_gallery . insert ( sym, span) ;
254
256
return tokenstream:: TokenTree :: token ( Ident ( sym, is_raw) , span) . into ( ) ;
255
257
}
256
258
TokenTree :: Literal ( self :: Literal {
@@ -540,7 +542,7 @@ impl server::TokenStream for Rustc<'_, '_> {
540
542
& mut self ,
541
543
tree : TokenTree < Self :: TokenStream , Self :: Span , Self :: Symbol > ,
542
544
) -> Self :: TokenStream {
543
- tree. to_internal ( )
545
+ ( tree, self ) . to_internal ( )
544
546
}
545
547
fn concat_trees (
546
548
& mut self ,
@@ -552,7 +554,7 @@ impl server::TokenStream for Rustc<'_, '_> {
552
554
builder. push ( base) ;
553
555
}
554
556
for tree in trees {
555
- builder. push ( tree. to_internal ( ) ) ;
557
+ builder. push ( ( tree, & mut * self ) . to_internal ( ) ) ;
556
558
}
557
559
builder. build ( )
558
560
}
0 commit comments