diff options
-rw-r--r-- | libbindgen/src/codegen/mod.rs | 2 | ||||
-rw-r--r-- | libbindgen/tests/expectations/tests/bitfield_method_mangling.rs | 49 | ||||
-rw-r--r-- | libbindgen/tests/headers/bitfield_method_mangling.h | 5 |
3 files changed, 55 insertions, 1 deletions
diff --git a/libbindgen/src/codegen/mod.rs b/libbindgen/src/codegen/mod.rs index 5a54c113..6c8a36f7 100644 --- a/libbindgen/src/codegen/mod.rs +++ b/libbindgen/src/codegen/mod.rs @@ -596,7 +596,7 @@ impl<'a> Bitfield<'a> { let field_type = field_item.to_rust_ty(ctx); let int_type = BlobTyBuilder::new(field_ty_layout).build(); - let getter_name = ctx.ext_cx().ident_of(&field_name); + let getter_name = ctx.rust_ident(&field_name); let setter_name = ctx.ext_cx() .ident_of(&format!("set_{}", &field_name)); let mask = ((1usize << width) - 1) << offset; diff --git a/libbindgen/tests/expectations/tests/bitfield_method_mangling.rs b/libbindgen/tests/expectations/tests/bitfield_method_mangling.rs new file mode 100644 index 00000000..5aba8abb --- /dev/null +++ b/libbindgen/tests/expectations/tests/bitfield_method_mangling.rs @@ -0,0 +1,49 @@ +/* automatically generated by rust-bindgen */ + + +#![allow(non_snake_case)] + + +#[repr(C)] +#[derive(Debug, Copy)] +pub struct _bindgen_ty_1 { + pub _bitfield_1: u32, +} +#[test] +fn bindgen_test_layout__bindgen_ty_1() { + assert_eq!(::std::mem::size_of::<_bindgen_ty_1>() , 4usize); + assert_eq!(::std::mem::align_of::<_bindgen_ty_1>() , 4usize); +} +impl Clone for _bindgen_ty_1 { + fn clone(&self) -> Self { *self } +} +impl _bindgen_ty_1 { + #[inline] + pub fn pad3(&self) -> ::std::os::raw::c_uint { + unsafe { + ::std::mem::transmute(((self._bitfield_1 & (16777215usize as u32)) + >> 0u32) as u32) + } + } + #[inline] + pub fn set_pad3(&mut self, val: ::std::os::raw::c_uint) { + self._bitfield_1 &= !(16777215usize as u32); + self._bitfield_1 |= + ((val as u32 as u32) << 0u32) & (16777215usize as u32); + } + #[inline] + pub fn type_(&self) -> ::std::os::raw::c_uint { + unsafe { + ::std::mem::transmute(((self._bitfield_1 & + (4278190080usize as u32)) >> 24u32) as + u32) + } + } + #[inline] + pub fn set_type(&mut self, val: ::std::os::raw::c_uint) { + self._bitfield_1 &= !(4278190080usize as u32); + self._bitfield_1 |= + ((val as u32 as u32) << 24u32) & (4278190080usize as u32); + } +} +pub type mach_msg_type_descriptor_t = _bindgen_ty_1; diff --git a/libbindgen/tests/headers/bitfield_method_mangling.h b/libbindgen/tests/headers/bitfield_method_mangling.h new file mode 100644 index 00000000..257648ee --- /dev/null +++ b/libbindgen/tests/headers/bitfield_method_mangling.h @@ -0,0 +1,5 @@ +typedef struct +{ + unsigned int pad3: 24; + unsigned int type: 8; +} mach_msg_type_descriptor_t; |