@@ -816,25 +816,28 @@ fn maybe_write_generics_intern<W: std::io::Write>(w: &mut W, generics: &syn::Gen
816
816
for ( idx, generic) in generics. params . iter ( ) . enumerate ( ) {
817
817
match generic {
818
818
syn:: GenericParam :: Type ( type_param) => {
819
- write ! ( w , "{}" , if idx != 0 { ", " } else { "" } ) . unwrap ( ) ;
819
+ let mut out = Vec :: new ( ) ;
820
820
let type_ident = & type_param. ident ;
821
821
if types. understood_c_type ( & syn:: parse_quote!( #type_ident) , Some ( & gen_types) ) {
822
- types. write_c_type_in_generic_param ( w , & syn:: parse_quote!( #type_ident) , Some ( & gen_types) , false ) ;
822
+ types. write_c_type_in_generic_param ( & mut out , & syn:: parse_quote!( #type_ident) , Some ( & gen_types) , false ) ;
823
823
} else {
824
824
if let syn:: PathArguments :: AngleBracketed ( args) = generics_impld {
825
825
if let syn:: GenericArgument :: Type ( ty) = & args. args [ idx] {
826
- types. write_c_type_in_generic_param ( w , & ty, Some ( & gen_types) , false ) ;
826
+ types. write_c_type_in_generic_param ( & mut out , & ty, Some ( & gen_types) , false ) ;
827
827
}
828
828
}
829
829
}
830
+ if !out. is_empty ( ) {
831
+ write ! ( w, "{}, " , String :: from_utf8( out) . unwrap( ) ) . unwrap ( ) ;
832
+ }
830
833
} ,
831
834
syn:: GenericParam :: Lifetime ( lt) => {
832
835
if dummy_lifetimes {
833
- write ! ( w, "'_" ) . unwrap ( ) ;
836
+ write ! ( w, "'_, " ) . unwrap ( ) ;
834
837
} else if concrete_lifetimes {
835
- write ! ( w, "'static" ) . unwrap ( ) ;
838
+ write ! ( w, "'static, " ) . unwrap ( ) ;
836
839
} else {
837
- write ! ( w, "{} '{}" , if idx != 0 { ", " } else { "" } , lt. lifetime. ident) . unwrap ( ) ;
840
+ write ! ( w, "'{}, " , lt. lifetime. ident) . unwrap ( ) ;
838
841
}
839
842
} ,
840
843
_ => unimplemented ! ( ) ,
0 commit comments