diff options
| -rw-r--r-- | macros/src/expectation.rs | 2 | ||||
| -rw-r--r-- | macros/src/syn_ext.rs | 17 | 
2 files changed, 16 insertions, 3 deletions
diff --git a/macros/src/expectation.rs b/macros/src/expectation.rs index d35ef97..7d8f1a7 100644 --- a/macros/src/expectation.rs +++ b/macros/src/expectation.rs @@ -208,7 +208,7 @@ impl ToTokens for Expectation              vis: Visibility::new_pub_crate(),              struct_token: <Token![struct]>::default(),              ident: self.ident.clone(), -            generics: generics.clone().without_where_clause(), +            generics: generics.clone().strip_where_clause_and_bounds(),              fields: Fields::Named(FieldsNamed {                  brace_token: Brace::default(),                  named: [Field { diff --git a/macros/src/syn_ext.rs b/macros/src/syn_ext.rs index 7a3e9ae..9b5b037 100644 --- a/macros/src/syn_ext.rs +++ b/macros/src/syn_ext.rs @@ -27,15 +27,28 @@ use syn::{  pub trait GenericsExt: Sized  { -    fn without_where_clause(self) -> Self; +    fn strip_where_clause_and_bounds(self) -> Self;  }  impl GenericsExt for Generics  { -    fn without_where_clause(mut self) -> Self +    fn strip_where_clause_and_bounds(mut self) -> Self      {          self.where_clause = None; +        self.params = self +            .params +            .into_iter() +            .map(|generic_param| match generic_param { +                GenericParam::Type(mut type_param) => { +                    type_param.bounds.clear(); + +                    GenericParam::Type(type_param) +                } +                generic_param => generic_param, +            }) +            .collect(); +          self      }  }  | 
