include source in error

This commit is contained in:
Quaternions 2024-09-20 18:01:25 -07:00
parent e2c74b8dfe
commit ededfd9e55

View File

@ -8,7 +8,10 @@ pub struct Runner{
}
#[derive(Debug)]
pub enum Error{
Lua(mlua::Error),
Lua{
source:String,
error:mlua::Error
},
Script(crate::script::Error),
/// If the lua.remove_app_data function fails
RemoveAppData,
@ -16,8 +19,8 @@ pub enum Error{
impl Error{
pub fn print(self){
match self{
Self::Lua(mlua::Error::RuntimeError(s))=>{
println!("lua error: {s}");
Self::Lua{source,error:mlua::Error::RuntimeError(s)}=>{
println!("lua error: {s}\nsource:{source}");
},
other=>println!("{:?}",other),
}
@ -81,11 +84,12 @@ impl Runner{
//this makes set_app_data shut up about the lifetime
self.lua.set_app_data::<&'static mut rbx_dom_weak::WeakDom>(unsafe{core::mem::transmute(&mut context.dom)});
let (name,source)=yoink.map_err(Error::Script)?;
self.lua.globals().set("script",super::instance::Instance::from(script)).map_err(Error::Lua)?;
self.lua.load(source)
self.lua.globals().set("script",super::instance::Instance::from(script)).map_err(|error|Error::Lua{source:source.clone(),error})?;
let r=self.lua.load(source.as_str())
.set_name(name)
.exec().map_err(Error::Lua)?;
.exec().map_err(|error|Error::Lua{source,error});
self.lua.remove_app_data::<&'static mut rbx_dom_weak::WeakDom>();
r?;
Ok(())
}
}