1 use proc_macro2::{Group, Span, TokenStream, TokenTree}; 2 3 pub(crate) fn respan(stream: TokenStream, span: Span) -> TokenStream { 4 stream 5 .into_iter() 6 .map(|token| respan_token(token, span)) 7 .collect() 8 } 9 respan_tokennull10fn respan_token(mut token: TokenTree, span: Span) -> TokenTree { 11 if let TokenTree::Group(g) = &mut token { 12 *g = Group::new(g.delimiter(), respan(g.stream(), span)); 13 } 14 token.set_span(span); 15 token 16 } 17