| extern crate proc_macro; | |
| use proc_macro::*; | |
| #[proc_macro] | |
| pub fn tokens(input: TokenStream) -> TokenStream { | |
| assert_nothing_joint(input); | |
| TokenStream::new() | |
| } | |
| #[proc_macro_attribute] | |
| pub fn nothing(_: TokenStream, input: TokenStream) -> TokenStream { | |
| assert_nothing_joint(input); | |
| TokenStream::new() | |
| } | |
| fn assert_nothing_joint(s: TokenStream) { | |
| for tt in s { | |
| match tt { | |
| TokenTree::Group(g) => assert_nothing_joint(g.stream()), | |
| TokenTree::Punct(p) => assert_eq!(p.spacing(), Spacing::Alone), | |
| _ => {} | |
| } | |
| } | |
| } |