Skip to content

Commit

Permalink
Auto merge of #1123 - photoszzt:fix_mangle_name, r=pepyakin
Browse files Browse the repository at this point in the history
Need mangle name of fields in struct for impl debug

Fix #1122  r? @fitzgen  or @emilio  or @pepyakin
  • Loading branch information
bors-servo committed Oct 30, 2017
2 parents 77046b7 + 67e98ba commit 8d045d2
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/codegen/impl_debug.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ impl<'a> ImplDebug<'a> for Item {
ctx: &BindgenContext,
name: &str,
) -> Option<(String, Vec<quote::Tokens>)> {
let name_ident = ctx.rust_ident_raw(name);
let name_ident = ctx.rust_ident(name);

// We don't know if blacklisted items `impl Debug` or not, so we can't
// add them to the format string we're building up.
Expand Down
112 changes: 112 additions & 0 deletions tests/expectations/tests/derive-debug-mangle-name.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/* automatically generated by rust-bindgen */


#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]


#[repr(C)]
#[derive(Copy, Clone)]
pub struct perf_event_attr {
pub type_: ::std::os::raw::c_uint,
pub a: f32,
pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_event_attr__bindgen_ty_1 {
pub b: ::std::os::raw::c_int,
pub c: ::std::os::raw::c_int,
_bindgen_union_align: u32,
}
#[test]
fn bindgen_test_layout_perf_event_attr__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<perf_event_attr__bindgen_ty_1>(),
4usize,
concat!("Size of: ", stringify!(perf_event_attr__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr__bindgen_ty_1>(),
4usize,
concat!("Alignment of ", stringify!(perf_event_attr__bindgen_ty_1))
);
assert_eq!(
unsafe { &(*(0 as *const perf_event_attr__bindgen_ty_1)).b as *const _ as usize },
0usize,
concat!(
"Alignment of field: ",
stringify!(perf_event_attr__bindgen_ty_1),
"::",
stringify!(b)
)
);
assert_eq!(
unsafe { &(*(0 as *const perf_event_attr__bindgen_ty_1)).c as *const _ as usize },
0usize,
concat!(
"Alignment of field: ",
stringify!(perf_event_attr__bindgen_ty_1),
"::",
stringify!(c)
)
);
}
impl Default for perf_event_attr__bindgen_ty_1 {
fn default() -> Self {
unsafe { ::std::mem::zeroed() }
}
}
impl ::std::fmt::Debug for perf_event_attr__bindgen_ty_1 {
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
write!(f, "perf_event_attr__bindgen_ty_1 {{ union }}")
}
}
#[test]
fn bindgen_test_layout_perf_event_attr() {
assert_eq!(
::std::mem::size_of::<perf_event_attr>(),
12usize,
concat!("Size of: ", stringify!(perf_event_attr))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr>(),
4usize,
concat!("Alignment of ", stringify!(perf_event_attr))
);
assert_eq!(
unsafe { &(*(0 as *const perf_event_attr)).type_ as *const _ as usize },
0usize,
concat!(
"Alignment of field: ",
stringify!(perf_event_attr),
"::",
stringify!(type_)
)
);
assert_eq!(
unsafe { &(*(0 as *const perf_event_attr)).a as *const _ as usize },
4usize,
concat!(
"Alignment of field: ",
stringify!(perf_event_attr),
"::",
stringify!(a)
)
);
}
impl Default for perf_event_attr {
fn default() -> Self {
unsafe { ::std::mem::zeroed() }
}
}
impl ::std::fmt::Debug for perf_event_attr {
fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
write!(
f,
"perf_event_attr {{ type: {:?}, a: {:?}, __bindgen_anon_1: {:?} }}",
self.type_,
self.a,
self.__bindgen_anon_1
)
}
}
14 changes: 14 additions & 0 deletions tests/headers/derive-debug-mangle-name.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// bindgen-flags: --impl-debug
struct perf_event_attr {

/*
* Major type: hardware/software/tracepoint/etc.
*/
unsigned int type;

float a;
union {
int b;
int c;
};
};

0 comments on commit 8d045d2

Please sign in to comment.