From: Ian Jackson Date: Mon, 4 Sep 2023 10:55:16 +0000 (+0100) Subject: W X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=0fffdafa9ded6c440c97ac8742a599dbdd848668;p=rust-experiments.git W --- diff --git a/macros/macros.rs b/macros/macros.rs index cb6cd4a..44cfdf6 100644 --- a/macros/macros.rs +++ b/macros/macros.rs @@ -1,7 +1,11 @@ - +use proc_macro2::TokenStream as TokenStream2; #[proc_macro] -pub fn foo(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - input +pub fn reparse(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input: TokenStream2 = input.into(); + let reparsed: TokenStream2 = syn::parse2(input).unwrap_or_else(|e| { + e.into_compile_error() + }); + reparsed.into() } diff --git a/src/main.rs b/src/main.rs index 4e085e7..48d9fde 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ +use foo_macros::reparse; + fn main() { - let s = stringify!(foo!("y")); + let s = reparse!(r#" "hi" "#); println!("{s}"); }