summaryrefslogtreecommitdiff
path: root/libbindgen/src/codegen/mod.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-22 19:38:22 +0100
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-22 19:38:22 +0100
commit2fa8409d1652b5f81c01d8ccb53bc30202249d95 (patch)
tree88cce1b0ba4f59db01afde765fddef14cd44d0c7 /libbindgen/src/codegen/mod.rs
parent26d4c73dd364fb52ac459ff642fade6c6a3895a3 (diff)
codegen: Don't bother generating an empty module.
Diffstat (limited to 'libbindgen/src/codegen/mod.rs')
-rw-r--r--libbindgen/src/codegen/mod.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/libbindgen/src/codegen/mod.rs b/libbindgen/src/codegen/mod.rs
index 0469a5be..ba52fa83 100644
--- a/libbindgen/src/codegen/mod.rs
+++ b/libbindgen/src/codegen/mod.rs
@@ -269,7 +269,7 @@ impl CodeGenerator for Module {
item: &Item) {
debug!("<Module as CodeGenerator>::codegen: item = {:?}", item);
- let codegen_self = |result: &mut CodegenResult| {
+ let codegen_self = |result: &mut CodegenResult, found_any: &mut bool| {
// FIXME: This could be less expensive, I guess.
for &whitelisted_item in whitelisted_items {
if whitelisted_item == item.id() {
@@ -278,21 +278,28 @@ impl CodeGenerator for Module {
let child = ctx.resolve_item(whitelisted_item);
if child.parent_id() == item.id() {
+ *found_any = true;
child.codegen(ctx, result, whitelisted_items, &());
}
}
};
if !ctx.options().enable_cxx_namespaces {
- codegen_self(result);
+ codegen_self(result, &mut false);
return;
}
+ let mut found_any = false;
let inner_items = result.inner(|result| {
result.push(root_import(ctx));
- codegen_self(result);
+ codegen_self(result, &mut found_any);
});
+ // Don't bother creating an empty module.
+ if !found_any {
+ return;
+ }
+
let module = ast::ItemKind::Mod(ast::Mod {
inner: ctx.span(),
items: inner_items,