diff --git a/crates/lb/src/task.lua b/crates/lb/src/task.lua new file mode 100644 index 0000000..9969a72 --- /dev/null +++ b/crates/lb/src/task.lua @@ -0,0 +1,6 @@ +local task = require("lb:task") + +-- include `lb_tasklib::spawn` in the global scope +function spawn(f, ...) + return task:spawn(f, ...) +end diff --git a/crates/lb/src/task.rs b/crates/lb/src/task.rs index 022d493..c7f1134 100644 --- a/crates/lb/src/task.rs +++ b/crates/lb/src/task.rs @@ -7,6 +7,7 @@ use tokio::task::JoinHandle; pub struct lb_tasklib; #[metatype] +#[include("task.lua")] impl lb_tasklib { #[new] extern "Lua-C" fn new() -> Self { diff --git a/crates/luaffi_impl/src/metatype.rs b/crates/luaffi_impl/src/metatype.rs index 901a7d4..b63425b 100644 --- a/crates/luaffi_impl/src/metatype.rs +++ b/crates/luaffi_impl/src/metatype.rs @@ -62,12 +62,12 @@ fn generate_impls(_args: &Args, imp: &mut ItemImpl) -> Result { imp.attrs.retain(|attr| { if attr.path().is_ident("include") { if let Ok(path) = attr.parse_args::() { - registry.build.push(quote_spanned!(attr.span() => + registry.build.push(quote_spanned!(path.span() => b.include_lua(::std::include_str!(#path)); )); return false; } else if let Ok(chunk) = attr.parse_args::() { - registry.build.push(quote_spanned!(attr.span() => + registry.build.push(quote_spanned!(chunk.span() => b.include_lua(#ffi::__internal::luaify_chunk!(#chunk)); )); return false;