summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbindgen/src/codegen/mod.rs2
-rw-r--r--libbindgen/tests/expectations/tests/bitfield_method_mangling.rs49
-rw-r--r--libbindgen/tests/headers/bitfield_method_mangling.h5
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;