From ededfd9e55a798c70e7071ff7c92d4c7218aaed7 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Fri, 20 Sep 2024 18:01:25 -0700 Subject: [PATCH] include source in error --- src/runner/runner.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/runner/runner.rs b/src/runner/runner.rs index fc0fbb6..8475486 100644 --- a/src/runner/runner.rs +++ b/src/runner/runner.rs @@ -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(()) } }