diff options
Diffstat (limited to 'tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs')
-rw-r--r-- | tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs b/tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs new file mode 100644 index 000000000..5088eab62 --- /dev/null +++ b/tests/incremental/issue-85197-invalid-span/auxiliary/respan.rs @@ -0,0 +1,19 @@ +// 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() +} |