pub(crate) mod param_spec;
pub(crate) mod parse;
mod render;
pub(crate) mod simple_param;
mod typ;
mod util;
use proc_macro::TokenStream;
use syn::ItemFn;
use syn::parse_macro_input;
pub(crate) fn starlark_module(attr: TokenStream, input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as ItemFn);
fn starlark_module_impl(attr: TokenStream, input: ItemFn) -> syn::Result<TokenStream> {
assert!(attr.is_empty());
let x = parse::parse(input)?;
Ok(render::render(x)?.into())
}
match starlark_module_impl(attr, input) {
Ok(x) => x,
Err(e) => e.to_compile_error().into(),
}
}