[bindings] Resolve type aliases mapped as opaque types
[rust-lightning] / c-bindings-gen / src / types.rs
index afe719ffe2ca11709f50f6942dbf629fc9920084..ad9cd0497f9f5b4f147f9560ac7a95d7051e0c11 100644 (file)
@@ -383,6 +383,21 @@ impl<'mod_lifetime, 'crate_lft: 'mod_lifetime> ImportResolver<'mod_lifetime, 'cr
                                                }
                                        }
                                },
+                               syn::Item::Type(t) if export_status(&t.attrs) == ExportStatus::Export => {
+                                       if let syn::Visibility::Public(_) = t.vis {
+                                               let mut process_alias = true;
+                                               for tok in t.generics.params.iter() {
+                                                       if let syn::GenericParam::Lifetime(_) = tok {}
+                                                       else { process_alias = false; }
+                                               }
+                                               if process_alias {
+                                                       match &*t.ty {
+                                                               syn::Type::Path(_) => { declared.insert(t.ident.clone(), DeclType::StructImported); },
+                                                               _ => {},
+                                                       }
+                                               }
+                                       }
+                               },
                                syn::Item::Enum(e) => {
                                        if let syn::Visibility::Public(_) = e.vis {
                                                match export_status(&e.attrs) {
@@ -524,6 +539,8 @@ pub struct CrateTypes<'a> {
        pub template_file: &'a mut File,
        /// Set of containers which are clonable
        pub clonable_types: HashSet<String>,
+       /// Key impls Value
+       pub trait_impls: HashMap<String, Vec<String>>,
 }
 
 /// A struct which tracks resolving rust types into C-mapped equivalents, exists for one specific