@@ -1291,17 +1291,25 @@ fn gen_bitfield_method(ctx: &mut GenCtx, bindgen_name: &String,
12911291}
12921292
12931293fn gen_fullbitfield_method ( ctx : & mut GenCtx , bindgen_name : & String ,
1294- field_type : & Type , bitfields : & Vec < ( String , u32 ) > ) -> ast:: ImplItem {
1294+ field_type : & Type , bitfields : & [ ( String , u32 ) ] ) -> ast:: ImplItem {
12951295 let field_type = cty_to_rs ( ctx, field_type, false ) ;
12961296 let mut args = vec ! ( ) ;
1297+ let mut unnamed: usize = 0 ;
12971298 for & ( ref name, width) in bitfields. iter ( ) {
1299+ let ident = if name. is_empty ( ) {
1300+ unnamed += 1 ;
1301+ let dummy = format ! ( "unnamed_bitfield{}" , unnamed) ;
1302+ ctx. ext_cx . ident_of ( & dummy)
1303+ } else {
1304+ ctx. ext_cx . ident_of ( name)
1305+ } ;
12981306 args. push ( ast:: Arg {
12991307 ty : P ( type_for_bitfield_width ( ctx, width) ) ,
13001308 pat : P ( ast:: Pat {
13011309 id : ast:: DUMMY_NODE_ID ,
13021310 node : ast:: PatIdent (
13031311 ast:: BindingMode :: ByValue ( ast:: MutImmutable ) ,
1304- respan ( ctx. span , ctx . ext_cx . ident_of ( name ) ) ,
1312+ respan ( ctx. span , ident ) ,
13051313 None
13061314 ) ,
13071315 span : ctx. span
@@ -1320,8 +1328,15 @@ fn gen_fullbitfield_method(ctx: &mut GenCtx, bindgen_name: &String,
13201328
13211329 let mut offset = 0 ;
13221330 let mut exprs = quote_expr ! ( & ctx. ext_cx, 0 ) ;
1331+ let mut unnamed: usize = 0 ;
13231332 for & ( ref name, width) in bitfields. iter ( ) {
1324- let name_ident = ctx. ext_cx . ident_of ( & name) ;
1333+ let name_ident = if name. is_empty ( ) {
1334+ unnamed += 1 ;
1335+ let dummy = format ! ( "unnamed_bitfield{}" , unnamed) ;
1336+ ctx. ext_cx . ident_of ( & dummy)
1337+ } else {
1338+ ctx. ext_cx . ident_of ( name)
1339+ } ;
13251340 exprs = quote_expr ! ( & ctx. ext_cx,
13261341 $exprs | ( ( $name_ident as $field_type) << $offset)
13271342 ) ;
0 commit comments