Skip to content

Commit 7b9dbf9

Browse files
authored
Don't render stack traces on wit-bindgen errors (#854)
These stack traces aren't useful since they're proc-macro business so write a custom function that renders an `anyhow::Error`.
1 parent 118d554 commit 7b9dbf9

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

crates/rust-macro/src/lib.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ pub fn generate(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
1717
.into()
1818
}
1919

20+
fn anyhow_to_syn(span: Span, err: anyhow::Error) -> Error {
21+
let mut msg = err.to_string();
22+
for cause in err.chain().skip(1) {
23+
msg.push_str(&format!("\n\nCaused by:\n {cause}"));
24+
}
25+
Error::new(span, msg)
26+
}
27+
2028
struct Config {
2129
opts: Opts,
2230
resolve: Resolve,
@@ -104,10 +112,10 @@ impl Parse for Config {
104112
}
105113
}
106114
let (resolve, pkg, files) =
107-
parse_source(&source).map_err(|err| Error::new(call_site, format!("{err:?}")))?;
115+
parse_source(&source).map_err(|err| anyhow_to_syn(call_site, err))?;
108116
let world = resolve
109117
.select_world(pkg, world.as_deref())
110-
.map_err(|e| Error::new(call_site, format!("{e:?}")))?;
118+
.map_err(|e| anyhow_to_syn(call_site, e))?;
111119
Ok(Config {
112120
opts,
113121
resolve,

0 commit comments

Comments
 (0)