Skip to content

Commit 53e91fd

Browse files
committed
Include argument info docs on all-pub struct constructors
Fixes lightningdevkit/ldk-garbagecollected#129
1 parent cb19ca6 commit 53e91fd

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

c-bindings-gen/src/main.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,19 @@ fn writeln_struct<'a, 'b, W: std::io::Write>(w: &mut W, s: &'a syn::ItemStruct,
812812
if all_fields_settable {
813813
// Build a constructor!
814814
writeln!(w, "/// Constructs a new {} given each field", struct_name).unwrap();
815+
match &s.fields {
816+
syn::Fields::Named(fields) => {
817+
writeln_arg_docs(w, &[], "", types, Some(&gen_types),
818+
fields.named.iter().map(|field| (format!("{}_arg", field.ident.as_ref().unwrap()), &field.ty)),
819+
None);
820+
},
821+
syn::Fields::Unnamed(fields) => {
822+
writeln_arg_docs(w, &[], "", types, Some(&gen_types),
823+
fields.unnamed.iter().enumerate().map(|(idx, field)| (format!("{}_arg", ('a' as u8 + idx as u8)), &field.ty)),
824+
None);
825+
},
826+
syn::Fields::Unit => {},
827+
}
815828
write!(w, "#[must_use]\n#[no_mangle]\npub extern \"C\" fn {}_new(", struct_name).unwrap();
816829

817830
match &s.fields {

0 commit comments

Comments
 (0)