1#[cfg(test)]
2extern crate proc_macro2 as proc_macro;
3
4use proc_macro::TokenStream;
5
6#[proc_macro]
7pub fn demo(tokens: TokenStream) -> TokenStream {
8 assert_eq!(tokens.to_string(), "pub struct S ;");
9 "impl Trait for S {}".parse().unwrap()
10}
11
12#[cfg(test)]
13mod tests {
14 use quote::quote;
15
16 #[test]
17 fn it_works() {
18 let out = crate::demo(quote! {
19 pub struct S;
20 });
21
22 let expected = quote! {
23 impl Trait for S {}
24 };
25
26 assert_eq!(out.to_string(), expected.to_string());
27 }
28}