in src/bindgen/library.rs [321:368]
fn resolve_declaration_types(&mut self) {
if !self.config.style.generate_tag() {
return;
}
let mut resolver = DeclarationTypeResolver::default();
self.structs.for_all_items(|x| {
x.collect_declaration_types(&mut resolver);
});
self.enums.for_all_items(|x| {
x.collect_declaration_types(&mut resolver);
});
self.unions.for_all_items(|x| {
x.collect_declaration_types(&mut resolver);
});
self.typedefs.for_all_items(|x| {
x.collect_declaration_types(&mut resolver);
});
// NOTE: Intentionally last, so that in case there's an opaque type
// which is conflicting with a non-opaque one, the later wins.
self.opaque_items.for_all_items(|x| {
x.collect_declaration_types(&mut resolver);
});
self.enums
.for_all_items_mut(|x| x.resolve_declaration_types(&resolver));
self.structs
.for_all_items_mut(|x| x.resolve_declaration_types(&resolver));
self.unions
.for_all_items_mut(|x| x.resolve_declaration_types(&resolver));
self.typedefs
.for_all_items_mut(|x| x.resolve_declaration_types(&resolver));
self.globals
.for_all_items_mut(|x| x.resolve_declaration_types(&resolver));
for item in &mut self.functions {
item.resolve_declaration_types(&resolver);
}
}