Ignore async functions as mapping them would be substantial work
[ldk-c-bindings] / c-bindings-gen / src / main.rs
index 02aa72fdc46c2c36241f270b3e9b547df47ee49b..f5a7656c0af60aecba2729388b9d503087d89ae8 100644 (file)
@@ -849,7 +849,8 @@ fn writeln_struct<'a, 'b, W: std::io::Write>(w: &mut W, s: &'a syn::ItemStruct,
                                write!(w, "\t}}").unwrap();
                        },
                        syn::Fields::Unnamed(fields) => {
-                               assert!(s.generics.lt_token.is_none());
+                               assert!(!s.generics.params.iter()
+                                       .any(|gen| if let syn::GenericParam::Lifetime(_) = gen { false } else { true }));
                                writeln!(w, "{} (", types.maybe_resolve_ident(&s.ident).unwrap()).unwrap();
                                for (idx, field) in fields.unnamed.iter().enumerate() {
                                        write!(w, "\t\t").unwrap();
@@ -1359,6 +1360,7 @@ fn writeln_impl<W: std::io::Write>(w: &mut W, w_uses: &mut HashSet<String, NonRa
                                                                                ExportStatus::NoExport|ExportStatus::TestOnly => continue,
                                                                                ExportStatus::NotImplementable => panic!("(C-not implementable) must only appear on traits"),
                                                                        }
+                                                                       if m.sig.asyncness.is_some() { continue; }
                                                                        let mut meth_gen_types = gen_types.push_ctx();
                                                                        assert!(meth_gen_types.learn_generics(&m.sig.generics, types));
                                                                        if m.defaultness.is_some() { unimplemented!(); }
@@ -1779,7 +1781,7 @@ fn writeln_enum<'a, 'b, W: std::io::Write>(w: &mut W, e: &'a syn::ItemEnum, type
                                                };
                                                if $ref || new_var {
                                                        if $ref {
-                                                               write!(w, "let mut {}_nonref = (*{}).clone();\n\t\t\t\t", $field_ident, $field_ident).unwrap();
+                                                               write!(w, "let mut {}_nonref = Clone::clone({});\n\t\t\t\t", $field_ident, $field_ident).unwrap();
                                                                if new_var {
                                                                        let nonref_ident = format_ident!("{}_nonref", $field_ident);
                                                                        if $to_c {