summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2017-09-22 13:27:36 -0500
committerGitHub <noreply@github.com>2017-09-22 13:27:36 -0500
commitbecdc797a2c12b4bb272b3a3b5ad577acf750e39 (patch)
treed73efeb80e9878b779116d92cf83aa777072b04f
parent30d6e0417a691da4f4959c8083328241fc02d1fd (diff)
parent24c203712a0d5268793eb539d43564f52a87b959 (diff)
Auto merge of #1014 - pepyakin:generate-base-names, r=fitzgen
Generate base names upon construction As per https://github.com/rust-lang-nursery/rust-bindgen/pull/1012#discussion_r140378893 r? @fitzgen
-rw-r--r--src/codegen/mod.rs8
-rw-r--r--src/ir/comp.rs7
2 files changed, 9 insertions, 6 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index ad4f65f4..49187125 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1559,7 +1559,7 @@ impl CodeGenerator for CompInfo {
struct_layout.saw_vtable();
}
- for (i, base) in self.base_members().iter().enumerate() {
+ for base in self.base_members() {
// Virtual bases are already taken into account by the vtable
// pointer.
//
@@ -1577,11 +1577,7 @@ impl CodeGenerator for CompInfo {
}
let inner = base.ty.to_rust_ty_or_opaque(ctx, &());
- let field_name = ctx.rust_ident(if i == 0 {
- "_base".into()
- } else {
- format!("_base_{}", i)
- });
+ let field_name = ctx.rust_ident(&base.field_name);
struct_layout.saw_base(base_ty);
diff --git a/src/ir/comp.rs b/src/ir/comp.rs
index bbccd06a..4c57a86b 100644
--- a/src/ir/comp.rs
+++ b/src/ir/comp.rs
@@ -769,6 +769,8 @@ pub struct Base {
pub ty: ItemId,
/// The kind of inheritance we're doing.
pub kind: BaseKind,
+ /// Name of the field in which this base should be stored.
+ pub field_name: String,
}
impl Base {
@@ -1155,11 +1157,16 @@ impl CompInfo {
BaseKind::Normal
};
+ let field_name = match ci.base_members.len() {
+ 0 => "_base".into(),
+ n => format!("_base_{}", n),
+ };
let type_id =
Item::from_ty_or_ref(cur.cur_type(), cur, None, ctx);
ci.base_members.push(Base {
ty: type_id,
kind: kind,
+ field_name: field_name,
});
}
CXCursor_Constructor |