17 lines
451 B
Rust
17 lines
451 B
Rust
use proc_macro2::{Group, Span, TokenStream, TokenTree};
|
|
|
|
pub(crate) fn respan(stream: TokenStream, span: Span) -> TokenStream {
|
|
stream
|
|
.into_iter()
|
|
.map(|token| respan_token(token, span))
|
|
.collect()
|
|
}
|
|
|
|
fn respan_token(mut token: TokenTree, span: Span) -> TokenTree {
|
|
if let TokenTree::Group(g) = &mut token {
|
|
*g = Group::new(g.delimiter(), respan(g.stream(), span));
|
|
}
|
|
token.set_span(span);
|
|
token
|
|
}
|