1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
extern crate proc_macro; extern crate proc_macro2; #[macro_use] extern crate syn; #[macro_use] extern crate quote; use proc_macro::TokenStream; mod doc; mod typed_array_element; #[proc_macro] pub fn impl_typed_array_element(input: TokenStream) -> TokenStream { self::typed_array_element::impl_element(input) .unwrap_or_else(to_compile_errors) .into() } #[proc_macro] pub fn decl_typed_array_element(input: TokenStream) -> TokenStream { self::typed_array_element::decl_element(input) .unwrap_or_else(to_compile_errors) .into() } #[proc_macro_attribute] pub fn doc_variant_collection_safety(attr: TokenStream, item: TokenStream) -> TokenStream { self::doc::variant_collection_safety(attr, item) .unwrap_or_else(to_compile_errors) .into() } fn to_compile_errors(error: syn::Error) -> proc_macro2::TokenStream { let compile_error = error.to_compile_error(); quote!(#compile_error) }