summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cann <shum@canndrew.org>2014-12-15 14:04:13 +0800
committerAndrew Cann <shum@canndrew.org>2014-12-15 14:04:13 +0800
commit0fa1990fbde3d36a757954ef2efa07aa734c40e9 (patch)
tree466504e393634dc0278e2792cb3b4db6e2c5e665
parentfd986cf4af8c5e4ddeaf548ea3e69b4875386478 (diff)
Correct output for empty structs.
This fixes a bug where empty C structs would be outputted as struct Struct_Foo { } instead of struct Struct_Foo;
-rw-r--r--src/gen.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gen.rs b/src/gen.rs
index ce13fe7d..cf1becc8 100644
--- a/src/gen.rs
+++ b/src/gen.rs
@@ -461,7 +461,7 @@ fn ctypedef_to_rs(ctx: &mut GenCtx, name: String, ty: &Type) -> Vec<P<ast::Item>
fn cstruct_to_rs(ctx: &mut GenCtx, name: String, fields: Vec<FieldInfo>) -> P<ast::Item> {
let mut unnamed: uint = 0;
- let fs = fields.iter().map(|f| {
+ let fs: Vec<ast::StructField> = fields.iter().map(|f| {
let f_name = if f.name.is_empty() || "_" == f.name.as_slice() {
unnamed += 1;
format!("unnamed_field{}", unnamed)
@@ -482,10 +482,11 @@ fn cstruct_to_rs(ctx: &mut GenCtx, name: String, fields: Vec<FieldInfo>) -> P<as
})
}).collect();
+ let ctor_id = if fs.is_empty() { Some(ast::DUMMY_NODE_ID) } else { None };
let def = ast::ItemStruct(
P(ast::StructDef {
fields: fs,
- ctor_id: None,
+ ctor_id: ctor_id,
}),
empty_generics()
);