Fix fallible void return
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index b6bc099..88fc812 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -293,7 +293,11 @@
outparam = Some(quote!(__return: *mut #ret));
}
if efn.throws {
- expr = quote!(::cxx::private::r#try(__return, #expr));
+ let out = match efn.ret {
+ Some(_) => quote!(__return),
+ None => quote!(&mut ()),
+ };
+ expr = quote!(::cxx::private::r#try(#out, #expr));
} else if indirect_return {
expr = quote!(::std::ptr::write(__return, #expr));
}