| //@ force-host |
| //@ no-prefer-dynamic |
| |
| #![crate_type = "proc-macro"] |
| |
| extern crate proc_macro; |
| use proc_macro::{TokenStream, TokenTree, Ident, Punct, Spacing, Span}; |
| |
| #[proc_macro] |
| pub fn make_struct(input: TokenStream) -> TokenStream { |
| match input.into_iter().next().unwrap() { |
| TokenTree::Ident(ident) => { |
| vec![ |
| TokenTree::Ident(Ident::new("struct", Span::call_site())), |
| TokenTree::Ident(Ident::new_raw(&ident.to_string(), Span::call_site())), |
| TokenTree::Punct(Punct::new(';', Spacing::Alone)) |
| ].into_iter().collect() |
| } |
| _ => panic!() |
| } |
| } |
| |
| #[proc_macro] |
| pub fn make_bad_struct(input: TokenStream) -> TokenStream { |
| match input.into_iter().next().unwrap() { |
| TokenTree::Ident(ident) => { |
| vec![ |
| TokenTree::Ident(Ident::new_raw("struct", Span::call_site())), |
| TokenTree::Ident(Ident::new(&ident.to_string(), Span::call_site())), |
| TokenTree::Punct(Punct::new(';', Spacing::Alone)) |
| ].into_iter().collect() |
| } |
| _ => panic!() |
| } |
| } |