chiark / gitweb /
W
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 4 Sep 2023 10:55:16 +0000 (11:55 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 4 Sep 2023 10:55:16 +0000 (11:55 +0100)
macros/macros.rs
src/main.rs

index cb6cd4aea30be3a6e83b7352247eabe54511c3c2..44cfdf69a8e94022c425fe384e57843a291c8c08 100644 (file)
@@ -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()
 }
index 4e085e7c1f2055210607e11e1c57b9bccf2e3e17..48d9fde5d60fb9ef784d0642c6a3421296ff55ad 100644 (file)
@@ -1,5 +1,7 @@
 
+use foo_macros::reparse;
+
 fn main() {
-    let s = stringify!(foo!("y"));
+    let s = reparse!(r#" "hi" "#);
     println!("{s}");
 }