17e2e9c0cSopenharmony_ciuse proc_macro2::{Group, Span, TokenStream, TokenTree}; 27e2e9c0cSopenharmony_ci 37e2e9c0cSopenharmony_cipub(crate) fn respan(stream: TokenStream, span: Span) -> TokenStream { 47e2e9c0cSopenharmony_ci stream 57e2e9c0cSopenharmony_ci .into_iter() 67e2e9c0cSopenharmony_ci .map(|token| respan_token(token, span)) 77e2e9c0cSopenharmony_ci .collect() 87e2e9c0cSopenharmony_ci} 97e2e9c0cSopenharmony_ci 107e2e9c0cSopenharmony_cifn respan_token(mut token: TokenTree, span: Span) -> TokenTree { 117e2e9c0cSopenharmony_ci if let TokenTree::Group(g) = &mut token { 127e2e9c0cSopenharmony_ci *g = Group::new(g.delimiter(), respan(g.stream(), span)); 137e2e9c0cSopenharmony_ci } 147e2e9c0cSopenharmony_ci token.set_span(span); 157e2e9c0cSopenharmony_ci token 167e2e9c0cSopenharmony_ci} 17