Skip to content

Commit f87b75f

Browse files
authored
Merge pull request #96 from TheBlueMatt/main
0.0.113 Bindings
2 parents c809fde + beda979 commit f87b75f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+13751
-10397
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
run: |
3838
git clone https://github.com/rust-bitcoin/rust-lightning
3939
cd rust-lightning
40-
git checkout 0.0.112-bindings
40+
git checkout 0.0.113-bindings
4141
- name: Rebuild bindings without std, and check the sample app builds + links
4242
run: ./genbindings.sh ./rust-lightning false
4343
- name: Rebuild bindings, and check the sample app builds + links
@@ -88,7 +88,7 @@ jobs:
8888
run: |
8989
git clone https://github.com/rust-bitcoin/rust-lightning
9090
cd rust-lightning
91-
git checkout 0.0.112-bindings
91+
git checkout 0.0.113-bindings
9292
- name: Rebuild bindings using Apple clang, and check the sample app builds + links
9393
run: ./genbindings.sh ./rust-lightning true
9494
- name: Rebuild bindings using upstream clang, and check the sample app builds + links

c-bindings-gen/src/blocks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ pub fn write_vec_block<W: std::io::Write>(w: &mut W, mangled_container: &str, in
250250
writeln!(w, "impl Drop for {} {{", mangled_container).unwrap();
251251
writeln!(w, "\tfn drop(&mut self) {{").unwrap();
252252
writeln!(w, "\t\tif self.datalen == 0 {{ return; }}").unwrap();
253-
writeln!(w, "\t\tunsafe {{ Box::from_raw(core::slice::from_raw_parts_mut(self.data, self.datalen)) }};").unwrap();
253+
writeln!(w, "\t\tlet _ = unsafe {{ Box::from_raw(core::slice::from_raw_parts_mut(self.data, self.datalen)) }};").unwrap();
254254
writeln!(w, "\t}}").unwrap();
255255
writeln!(w, "}}").unwrap();
256256
if clonable {

c-bindings-gen/src/main.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ macro_rules! get_module_type_resolver {
271271
let mut module_iter = module.rsplitn(2, "::");
272272
module_iter.next().unwrap();
273273
let module = module_iter.next().unwrap();
274-
let imports = ImportResolver::new(module.splitn(2, "::").next().unwrap(), &$crate_types.lib_ast.dependencies,
274+
let imports = ImportResolver::new(module.splitn(2, "::").next().unwrap(), &$crate_types.lib_ast,
275275
module, &$crate_types.lib_ast.modules.get(module).unwrap().items);
276276
TypeResolver::new(module, imports, $crate_types)
277277
} }
@@ -677,7 +677,7 @@ fn writeln_opaque<W: std::io::Write>(w: &mut W, ident: &syn::Ident, struct_name:
677677
writeln!(w, "#[allow(unused)]").unwrap();
678678
writeln!(w, "/// Used only if an object of this type is returned as a trait impl by a method").unwrap();
679679
writeln!(w, "pub(crate) extern \"C\" fn {}_free_void(this_ptr: *mut c_void) {{", struct_name).unwrap();
680-
writeln!(w, "\tunsafe {{ let _ = Box::from_raw(this_ptr as *mut native{}); }}\n}}", struct_name).unwrap();
680+
writeln!(w, "\tlet _ = unsafe {{ Box::from_raw(this_ptr as *mut native{}) }};\n}}", struct_name).unwrap();
681681
writeln!(w, "#[allow(unused)]").unwrap();
682682
writeln!(w, "impl {} {{", struct_name).unwrap();
683683
writeln!(w, "\tpub(crate) fn get_native_ref(&self) -> &'static native{} {{", struct_name).unwrap();
@@ -849,7 +849,8 @@ fn writeln_struct<'a, 'b, W: std::io::Write>(w: &mut W, s: &'a syn::ItemStruct,
849849
write!(w, "\t}}").unwrap();
850850
},
851851
syn::Fields::Unnamed(fields) => {
852-
assert!(s.generics.lt_token.is_none());
852+
assert!(!s.generics.params.iter()
853+
.any(|gen| if let syn::GenericParam::Lifetime(_) = gen { false } else { true }));
853854
writeln!(w, "{} (", types.maybe_resolve_ident(&s.ident).unwrap()).unwrap();
854855
for (idx, field) in fields.unnamed.iter().enumerate() {
855856
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
13591360
ExportStatus::NoExport|ExportStatus::TestOnly => continue,
13601361
ExportStatus::NotImplementable => panic!("(C-not implementable) must only appear on traits"),
13611362
}
1363+
if m.sig.asyncness.is_some() { continue; }
13621364
let mut meth_gen_types = gen_types.push_ctx();
13631365
assert!(meth_gen_types.learn_generics(&m.sig.generics, types));
13641366
if m.defaultness.is_some() { unimplemented!(); }
@@ -1430,7 +1432,7 @@ fn create_alias_for_impl<F: FnMut(syn::ItemImpl, &mut TypeResolver)>(resolved_pa
14301432

14311433
let alias_resolver_override;
14321434
let alias_resolver = if alias_module != types.module_path {
1433-
alias_resolver_override = ImportResolver::new(types.types.crate_name, &types.crate_types.lib_ast.dependencies,
1435+
alias_resolver_override = ImportResolver::new(types.types.crate_name, &types.crate_types.lib_ast,
14341436
alias_module, &types.crate_types.lib_ast.modules.get(alias_module).unwrap().items);
14351437
&alias_resolver_override
14361438
} else { &types.types };
@@ -1779,7 +1781,7 @@ fn writeln_enum<'a, 'b, W: std::io::Write>(w: &mut W, e: &'a syn::ItemEnum, type
17791781
};
17801782
if $ref || new_var {
17811783
if $ref {
1782-
write!(w, "let mut {}_nonref = (*{}).clone();\n\t\t\t\t", $field_ident, $field_ident).unwrap();
1784+
write!(w, "let mut {}_nonref = Clone::clone({});\n\t\t\t\t", $field_ident, $field_ident).unwrap();
17831785
if new_var {
17841786
let nonref_ident = format_ident!("{}_nonref", $field_ident);
17851787
if $to_c {
@@ -1924,7 +1926,7 @@ fn convert_priv_mod<'a, 'b: 'a, W: std::io::Write>(w: &mut W, w_uses: &mut HashS
19241926
use_items.push(item);
19251927
}
19261928
}
1927-
let import_resolver = ImportResolver::from_borrowed_items(mod_path.splitn(2, "::").next().unwrap(), &libast.dependencies, mod_path, &use_items);
1929+
let import_resolver = ImportResolver::from_borrowed_items(mod_path.splitn(2, "::").next().unwrap(), libast, mod_path, &use_items);
19281930
let mut types = TypeResolver::new(mod_path, import_resolver, crate_types);
19291931

19301932
writeln!(w, "mod {} {{\n{}", module.ident, DEFAULT_IMPORTS).unwrap();
@@ -2006,7 +2008,7 @@ fn convert_file<'a, 'b>(libast: &'a FullLibraryAST, crate_types: &CrateTypes<'a>
20062008

20072009
eprintln!("Converting {} entries...", module);
20082010

2009-
let import_resolver = ImportResolver::new(orig_crate, &libast.dependencies, module, items);
2011+
let import_resolver = ImportResolver::new(orig_crate, libast, module, items);
20102012
let mut type_resolver = TypeResolver::new(module, import_resolver, crate_types);
20112013

20122014
for item in items.iter() {
@@ -2118,7 +2120,7 @@ fn walk_ast_second_pass<'a>(ast_storage: &'a FullLibraryAST, crate_types: &Crate
21182120
let ASTModule { ref attrs, ref items, .. } = astmod;
21192121
assert_eq!(export_status(&attrs), ExportStatus::Export);
21202122

2121-
let import_resolver = ImportResolver::new(orig_crate, &ast_storage.dependencies, module, items);
2123+
let import_resolver = ImportResolver::new(orig_crate, ast_storage, module, items);
21222124
let mut types = TypeResolver::new(module, import_resolver, crate_types);
21232125

21242126
for item in items.iter() {
@@ -2154,7 +2156,7 @@ fn walk_ast_second_pass<'a>(ast_storage: &'a FullLibraryAST, crate_types: &Crate
21542156
}
21552157

21562158
fn walk_private_mod<'a>(ast_storage: &'a FullLibraryAST, orig_crate: &str, module: String, items: &'a syn::ItemMod, crate_types: &mut CrateTypes<'a>) {
2157-
let import_resolver = ImportResolver::new(orig_crate, &ast_storage.dependencies, &module, &items.content.as_ref().unwrap().1);
2159+
let import_resolver = ImportResolver::new(orig_crate, ast_storage, &module, &items.content.as_ref().unwrap().1);
21582160
for item in items.content.as_ref().unwrap().1.iter() {
21592161
match item {
21602162
syn::Item::Mod(m) => walk_private_mod(ast_storage, orig_crate, format!("{}::{}", module, m.ident), m, crate_types),
@@ -2183,7 +2185,7 @@ fn walk_ast_first_pass<'a>(ast_storage: &'a FullLibraryAST, crate_types: &mut Cr
21832185
let ASTModule { ref attrs, ref items, submods: _ } = astmod;
21842186
assert_eq!(export_status(&attrs), ExportStatus::Export);
21852187
let orig_crate = module.splitn(2, "::").next().unwrap();
2186-
let import_resolver = ImportResolver::new(orig_crate, &ast_storage.dependencies, module, items);
2188+
let import_resolver = ImportResolver::new(orig_crate, ast_storage, module, items);
21872189

21882190
for item in items.iter() {
21892191
match item {

0 commit comments

Comments
 (0)