* Import Wasmtime support from the `wit-bindgen` repo This commit imports the `wit-bindgen-gen-host-wasmtime-rust` crate from the `wit-bindgen` repository into the upstream Wasmtime repository. I've chosen to not import the full history here since the crate is relatively small and doesn't have a ton of complexity. While the history of the crate is quite long the current iteration of the crate's history is relatively short so there's not a ton of import there anyway. The thinking is that this can now continue to evolve in-tree. * Refactor `wasmtime-component-macro` a bit Make room for a `wit_bindgen` macro to slot in. * Add initial support for a `bindgen` macro * Add tests for `wasmtime::component::bindgen!` * Improve error forgetting `async` feature * Add end-to-end tests for bindgen * Add an audit of `unicase` * Add a license to the test-helpers crate * Add vet entry for `pulldown-cmark` * Update publish script with new crate * Try to fix publish script * Update audits * Update lock file
49 lines
1.4 KiB
Rust
49 lines
1.4 KiB
Rust
use syn::{parse_macro_input, DeriveInput, Error};
|
|
|
|
mod bindgen;
|
|
mod component;
|
|
|
|
#[proc_macro_derive(Lift, attributes(component))]
|
|
pub fn lift(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
component::expand(
|
|
&component::LiftExpander,
|
|
&parse_macro_input!(input as DeriveInput),
|
|
)
|
|
.unwrap_or_else(Error::into_compile_error)
|
|
.into()
|
|
}
|
|
|
|
#[proc_macro_derive(Lower, attributes(component))]
|
|
pub fn lower(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
component::expand(
|
|
&component::LowerExpander,
|
|
&parse_macro_input!(input as DeriveInput),
|
|
)
|
|
.unwrap_or_else(Error::into_compile_error)
|
|
.into()
|
|
}
|
|
|
|
#[proc_macro_derive(ComponentType, attributes(component))]
|
|
pub fn component_type(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
component::expand(
|
|
&component::ComponentTypeExpander,
|
|
&parse_macro_input!(input as DeriveInput),
|
|
)
|
|
.unwrap_or_else(Error::into_compile_error)
|
|
.into()
|
|
}
|
|
|
|
#[proc_macro]
|
|
pub fn flags(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
component::expand_flags(&parse_macro_input!(input as component::Flags))
|
|
.unwrap_or_else(Error::into_compile_error)
|
|
.into()
|
|
}
|
|
|
|
#[proc_macro]
|
|
pub fn bindgen(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
bindgen::expand(&parse_macro_input!(input as bindgen::Config))
|
|
.unwrap_or_else(Error::into_compile_error)
|
|
.into()
|
|
}
|