// force-host // no-prefer-dynamic #![crate_type = "proc-macro"] extern crate proc_macro; use proc_macro::{Literal, Span, TokenStream, TokenTree}; #[proc_macro] pub fn foo_with_input_span(input: TokenStream) -> TokenStream { let span = input.into_iter().next().unwrap().span(); let mut lit = Literal::string("{foo}"); lit.set_span(span); TokenStream::from(TokenTree::Literal(lit)) } #[proc_macro] pub fn err_with_input_span(input: TokenStream) -> TokenStream { let span = input.into_iter().next().unwrap().span(); let mut lit = Literal::string(" }"); lit.set_span(span); TokenStream::from(TokenTree::Literal(lit)) }