File tree Expand file tree Collapse file tree 4 files changed +15
-5
lines changed
src/tools/rust-analyzer/crates/proc-macro-srv/src Expand file tree Collapse file tree 4 files changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -258,7 +258,9 @@ impl server::TokenStream for RaSpanServer {
258258 & mut self ,
259259 stream : Self :: TokenStream ,
260260 ) -> Vec < bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Symbol > > {
261- stream. into_bridge ( )
261+ stream. into_bridge ( & mut |first, second| {
262+ server:: Span :: join ( self , first, second) . unwrap_or ( first)
263+ } )
262264 }
263265}
264266
Original file line number Diff line number Diff line change @@ -238,7 +238,8 @@ impl server::TokenStream for TokenIdServer {
238238 & mut self ,
239239 stream : Self :: TokenStream ,
240240 ) -> Vec < bridge:: TokenTree < Self :: TokenStream , Self :: Span , Self :: Symbol > > {
241- stream. into_bridge ( )
241+ // Can't join with `TokenId`.
242+ stream. into_bridge ( & mut |first, _second| first)
242243 }
243244}
244245
Original file line number Diff line number Diff line change @@ -56,7 +56,10 @@ impl<S: Copy> TokenStream<S> {
5656 self . token_trees . is_empty ( )
5757 }
5858
59- pub ( crate ) fn into_bridge ( self ) -> Vec < bridge:: TokenTree < Self , S , intern:: Symbol > > {
59+ pub ( crate ) fn into_bridge (
60+ self ,
61+ join_spans : & mut dyn FnMut ( S , S ) -> S ,
62+ ) -> Vec < bridge:: TokenTree < Self , S , intern:: Symbol > > {
6063 let mut result = Vec :: new ( ) ;
6164 let mut iter = self . token_trees . into_iter ( ) ;
6265 while let Some ( tree) = iter. next ( ) {
@@ -98,7 +101,11 @@ impl<S: Copy> TokenStream<S> {
98101 token_trees : iter. by_ref ( ) . take ( subtree. usize_len ( ) ) . collect ( ) ,
99102 } )
100103 } ,
101- span : bridge:: DelimSpan :: from_single ( subtree. delimiter . open ) ,
104+ span : bridge:: DelimSpan {
105+ open : subtree. delimiter . open ,
106+ close : subtree. delimiter . close ,
107+ entire : join_spans ( subtree. delimiter . open , subtree. delimiter . close ) ,
108+ } ,
102109 } ) )
103110 }
104111 }
Original file line number Diff line number Diff line change @@ -144,7 +144,7 @@ fn test_fn_like_macro_clone_ident_subtree() {
144144 SUBTREE $$ 42:2@0..100#ROOT2024 42:2@0..100#ROOT2024
145145 IDENT ident 42:2@0..5#ROOT2024
146146 PUNCH , [alone] 42:2@5..6#ROOT2024
147- SUBTREE [] 42:2@7..8 #ROOT2024 42:2@7..8 #ROOT2024"# ] ] ,
147+ SUBTREE [] 42:2@7..9 #ROOT2024 42:2@7..9 #ROOT2024"# ] ] ,
148148 ) ;
149149}
150150
You can’t perform that action at this time.
0 commit comments