diff options
author | Andrew Cann <shum@canndrew.org> | 2014-12-15 14:04:13 +0800 |
---|---|---|
committer | Andrew Cann <shum@canndrew.org> | 2014-12-15 14:04:13 +0800 |
commit | 0fa1990fbde3d36a757954ef2efa07aa734c40e9 (patch) | |
tree | 466504e393634dc0278e2792cb3b4db6e2c5e665 | |
parent | fd986cf4af8c5e4ddeaf548ea3e69b4875386478 (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.rs | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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() ); |