| 160 | /// Exposes a zero-arg fn as a module constant via the `__const_<name>` export convention. |
| 161 | #[proc_macro_attribute] |
| 162 | pub fn plugin_const(_attr: TokenStream, item: TokenStream) -> TokenStream { |
| 163 | let mut input = parse_macro_input!(item as ItemFn); |
| 164 | if !input.sig.inputs.is_empty() { |
| 165 | return TokenStream::from(quote! { compile_error!("#[plugin_const] takes no parameters"); }); |
| 166 | } |
| 167 | input.sig.ident = format_ident!("__const_{}", input.sig.ident); |
| 168 | plugin_fn(TokenStream::new(), TokenStream::from(quote!(#input))) |
| 169 | } |
| 170 | |
| 171 | #[proc_macro_attribute] |
| 172 | pub fn plugin_class(_attr: TokenStream, item: TokenStream) -> TokenStream { |