1use proc_macro::TokenStream;
2
3mod module;
4
5#[cfg(feature = "macros")]
6use {crate::chunk::Chunk, proc_macro_error2::proc_macro_error};
7
8#[cfg(feature = "macros")]
9macro_rules! try_compile {
10 ($expr:expr) => {
11 match $expr {
12 Ok(val) => val,
13 Err(err) => return err.to_compile_error().into(),
14 }
15 };
16}
17
18#[proc_macro_attribute]
19pub fn lua_module(attr: TokenStream, item: TokenStream) -> TokenStream {
20 module::lua_module(attr, item)
21}
22
23#[cfg(feature = "macros")]
24#[proc_macro]
25#[proc_macro_error]
26pub fn chunk(input: TokenStream) -> TokenStream {
27 Chunk::new(input).expand().into()
28}
29
30#[cfg(feature = "macros")]
31#[proc_macro_derive(FromLua)]
32pub fn from_lua(input: TokenStream) -> TokenStream {
33 from_lua::from_lua(input)
34}
35
36#[cfg(feature = "macros")]
38#[proc_macro_derive(UserData, attributes(lua))]
39pub fn userdata(item: TokenStream) -> TokenStream {
40 userdata::userdata_type(item)
41}
42
43#[cfg(feature = "macros")]
45#[proc_macro_attribute]
46pub fn userdata_impl(attr: TokenStream, item: TokenStream) -> TokenStream {
47 userdata::userdata_impl::userdata_impl(attr, item)
48}
49
50#[cfg(feature = "macros")]
51mod chunk;
52#[cfg(feature = "macros")]
53mod from_lua;
54#[cfg(feature = "macros")]
55mod userdata;