1 //! > **⚠️ Warning ⚠️**: this crate is an internal-only crate for the Wasmtime
2 //! > project and is not intended for general use. APIs are not strictly
3 //! > reviewed for safety and usage outside of Wasmtime may have bugs. If
4 //! > you're interested in using this feel free to file an issue on the
5 //! > Wasmtime repository to start a discussion about doing so, but otherwise
6 //! > be aware that your usage of this crate is not supported.
7 
8 use syn::{DeriveInput, Error, parse_macro_input};
9 
10 mod bindgen;
11 mod component;
12 
13 #[proc_macro_derive(Lift, attributes(component))]
lift(input: proc_macro::TokenStream) -> proc_macro::TokenStream14 pub fn lift(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
15     component::expand(
16         &component::LiftExpander,
17         &parse_macro_input!(input as DeriveInput),
18     )
19     .unwrap_or_else(Error::into_compile_error)
20     .into()
21 }
22 
23 #[proc_macro_derive(Lower, attributes(component))]
lower(input: proc_macro::TokenStream) -> proc_macro::TokenStream24 pub fn lower(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
25     component::expand(
26         &component::LowerExpander,
27         &parse_macro_input!(input as DeriveInput),
28     )
29     .unwrap_or_else(Error::into_compile_error)
30     .into()
31 }
32 
33 #[proc_macro_derive(ComponentType, attributes(component))]
component_type(input: proc_macro::TokenStream) -> proc_macro::TokenStream34 pub fn component_type(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
35     component::expand(
36         &component::ComponentTypeExpander,
37         &parse_macro_input!(input as DeriveInput),
38     )
39     .unwrap_or_else(Error::into_compile_error)
40     .into()
41 }
42 
43 #[proc_macro]
flags(input: proc_macro::TokenStream) -> proc_macro::TokenStream44 pub fn flags(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
45     component::expand_flags(&parse_macro_input!(input as component::Flags))
46         .unwrap_or_else(Error::into_compile_error)
47         .into()
48 }
49 
50 #[proc_macro]
bindgen(input: proc_macro::TokenStream) -> proc_macro::TokenStream51 pub fn bindgen(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
52     bindgen::expand(&parse_macro_input!(input as bindgen::Config))
53         .unwrap_or_else(Error::into_compile_error)
54         .into()
55 }
56