Skip to content

Commit

Permalink
don't generate UserErrorConversion trait if empty
Browse files Browse the repository at this point in the history
  • Loading branch information
Pat Hickey committed Nov 15, 2022
1 parent 880669c commit b2b5875
Showing 1 changed file with 23 additions and 16 deletions.
39 changes: 23 additions & 16 deletions crates/wiggle/generate/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,22 +36,30 @@ pub fn generate(doc: &witx::Document, settings: &CodegenSettings) -> TokenStream
}
});

let user_error_methods = settings.errors.iter().filter_map(|errtype| match errtype {
ErrorType::User(errtype) => {
let abi_typename = names::type_ref(&errtype.abi_type(), anon_lifetime());
let user_typename = errtype.typename();
let methodname = names::user_error_conversion_method(&errtype);
Some(quote! {
fn #methodname(&mut self, e: super::#user_typename)
-> wiggle::anyhow::Result<#abi_typename>;
})
}
ErrorType::Generated(_) => None,
});
let user_error_conversion = quote! {
pub trait UserErrorConversion {
#(#user_error_methods)*
let user_error_methods = settings
.errors
.iter()
.filter_map(|errtype| match errtype {
ErrorType::User(errtype) => {
let abi_typename = names::type_ref(&errtype.abi_type(), anon_lifetime());
let user_typename = errtype.typename();
let methodname = names::user_error_conversion_method(&errtype);
Some(quote! {
fn #methodname(&mut self, e: super::#user_typename)
-> wiggle::anyhow::Result<#abi_typename>;
})
}
ErrorType::Generated(_) => None,
})
.collect::<Vec<TokenStream>>();
let user_error_conversion = if !user_error_methods.is_empty() {
quote! {
pub trait UserErrorConversion {
#(#user_error_methods)*
}
}
} else {
Default::default()
};
let modules = doc.modules().map(|module| {
let modname = names::module(&module.name);
Expand All @@ -65,7 +73,6 @@ pub fn generate(doc: &witx::Document, settings: &CodegenSettings) -> TokenStream
quote!(
pub mod #modname {
use super::types::*;
pub use super::types::UserErrorConversion;
#(#fs)*

#modtrait
Expand Down

0 comments on commit b2b5875

Please sign in to comment.