diff --git a/crates/wiggle/generate/src/funcs.rs b/crates/wiggle/generate/src/funcs.rs index af15709d0b..4fcdcba474 100644 --- a/crates/wiggle/generate/src/funcs.rs +++ b/crates/wiggle/generate/src/funcs.rs @@ -139,10 +139,12 @@ impl witx::Bindgen for Rust<'_> { ) { let rt = self.rt; let wrap_err = |location: &str| { + let modulename = self.module.name.as_str(); let funcname = self.funcname; quote! { |e| { #rt::GuestError::InFunc { + modulename: #modulename, funcname: #funcname, location: #location, err: Box::new(#rt::GuestError::from(e)), diff --git a/crates/wiggle/src/error.rs b/crates/wiggle/src/error.rs index 5cfab66675..965a88e816 100644 --- a/crates/wiggle/src/error.rs +++ b/crates/wiggle/src/error.rs @@ -19,14 +19,15 @@ pub enum GuestError { BorrowCheckerOutOfHandles, #[error("Slice length mismatch")] SliceLengthsDiffer, - #[error("In func {funcname}:{location}:")] + #[error("In func {modulename}::{funcname} at {location}: {err}")] InFunc { + modulename: &'static str, funcname: &'static str, location: &'static str, #[source] err: Box, }, - #[error("In data {typename}.{field}:")] + #[error("In data {typename}.{field}: {err}")] InDataField { typename: String, field: String,