//@ force-host | |
//@ no-prefer-dynamic | |
#![crate_type = "proc-macro"] | |
extern crate proc_macro; | |
use proc_macro::TokenStream; | |
/// Copies the resolution information (the `SyntaxContext`) of the first | |
/// token to all other tokens in the stream. Does not recurse into groups. | |
#[proc_macro] | |
pub fn respan(input: TokenStream) -> TokenStream { | |
let first_span = input.clone().into_iter().next().unwrap().span(); | |
input.into_iter().map(|mut tree| { | |
tree.set_span(tree.span().resolved_at(first_span)); | |
tree | |
}).collect() | |
} |