summaryrefslogtreecommitdiff
path: root/libbindgen/src
diff options
context:
space:
mode:
Diffstat (limited to 'libbindgen/src')
-rw-r--r--libbindgen/src/ir/comp.rs4
-rw-r--r--libbindgen/src/ir/context.rs5
-rw-r--r--libbindgen/src/ir/item.rs3
3 files changed, 10 insertions, 2 deletions
diff --git a/libbindgen/src/ir/comp.rs b/libbindgen/src/ir/comp.rs
index 70dfd4a6..6dfa1ece 100644
--- a/libbindgen/src/ir/comp.rs
+++ b/libbindgen/src/ir/comp.rs
@@ -971,6 +971,10 @@ impl TypeCollector for CompInfo {
types.insert(ty);
}
+ for &var in self.inner_vars() {
+ types.insert(var);
+ }
+
// FIXME(emilio): Methods, VTable?
}
}
diff --git a/libbindgen/src/ir/context.rs b/libbindgen/src/ir/context.rs
index 06137672..b0143bd5 100644
--- a/libbindgen/src/ir/context.rs
+++ b/libbindgen/src/ir/context.rs
@@ -1256,8 +1256,9 @@ impl<'ctx, 'gen> Iterator for AssertNoDanglingItemIter<'ctx, 'gen>
}
for sub_id in sub_types {
- if let Some(value) = self.seen.insert(id, sub_id) {
- self.to_iterate.push_back(value);
+ if self.seen.insert(sub_id, id).is_none() {
+ // We've never visited this sub item before.
+ self.to_iterate.push_back(sub_id);
}
}
diff --git a/libbindgen/src/ir/item.rs b/libbindgen/src/ir/item.rs
index 3810bc2f..df8fd222 100644
--- a/libbindgen/src/ir/item.rs
+++ b/libbindgen/src/ir/item.rs
@@ -202,6 +202,9 @@ impl TypeCollector for Item {
// be opaque, so we trace across it.
types.insert(fun.signature());
}
+ ItemKind::Var(ref var) => {
+ types.insert(var.ty());
+ }
_ => {} // FIXME.
}
}