summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/expectations/tests/opaque-template-inst-member-2.rs67
-rw-r--r--tests/headers/opaque-template-inst-member-2.hpp20
2 files changed, 87 insertions, 0 deletions
diff --git a/tests/expectations/tests/opaque-template-inst-member-2.rs b/tests/expectations/tests/opaque-template-inst-member-2.rs
new file mode 100644
index 00000000..9adf8ef5
--- /dev/null
+++ b/tests/expectations/tests/opaque-template-inst-member-2.rs
@@ -0,0 +1,67 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct OpaqueTemplate {
+}
+impl Default for OpaqueTemplate {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Debug, Default, Copy)]
+pub struct ContainsOpaqueTemplate {
+ pub mBlah: u32,
+ pub mBaz: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_ContainsOpaqueTemplate() {
+ assert_eq!(::std::mem::size_of::<ContainsOpaqueTemplate>() , 8usize ,
+ concat ! ( "Size of: " , stringify ! ( ContainsOpaqueTemplate )
+ ));
+ assert_eq! (::std::mem::align_of::<ContainsOpaqueTemplate>() , 4usize ,
+ concat ! (
+ "Alignment of " , stringify ! ( ContainsOpaqueTemplate ) ));
+ assert_eq! (unsafe {
+ & ( * ( 0 as * const ContainsOpaqueTemplate ) ) . mBlah as *
+ const _ as usize } , 0usize , concat ! (
+ "Alignment of field: " , stringify ! ( ContainsOpaqueTemplate
+ ) , "::" , stringify ! ( mBlah ) ));
+ assert_eq! (unsafe {
+ & ( * ( 0 as * const ContainsOpaqueTemplate ) ) . mBaz as *
+ const _ as usize } , 4usize , concat ! (
+ "Alignment of field: " , stringify ! ( ContainsOpaqueTemplate
+ ) , "::" , stringify ! ( mBaz ) ));
+}
+impl Clone for ContainsOpaqueTemplate {
+ fn clone(&self) -> Self { *self }
+}
+#[repr(C)]
+#[derive(Debug, Copy)]
+pub struct InheritsOpaqueTemplate {
+ pub _base: u8,
+ pub wow: *mut ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_InheritsOpaqueTemplate() {
+ assert_eq!(::std::mem::size_of::<InheritsOpaqueTemplate>() , 16usize ,
+ concat ! ( "Size of: " , stringify ! ( InheritsOpaqueTemplate )
+ ));
+ assert_eq! (::std::mem::align_of::<InheritsOpaqueTemplate>() , 8usize ,
+ concat ! (
+ "Alignment of " , stringify ! ( InheritsOpaqueTemplate ) ));
+ assert_eq! (unsafe {
+ & ( * ( 0 as * const InheritsOpaqueTemplate ) ) . wow as *
+ const _ as usize } , 8usize , concat ! (
+ "Alignment of field: " , stringify ! ( InheritsOpaqueTemplate
+ ) , "::" , stringify ! ( wow ) ));
+}
+impl Clone for InheritsOpaqueTemplate {
+ fn clone(&self) -> Self { *self }
+}
+impl Default for InheritsOpaqueTemplate {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/headers/opaque-template-inst-member-2.hpp b/tests/headers/opaque-template-inst-member-2.hpp
new file mode 100644
index 00000000..d4386f48
--- /dev/null
+++ b/tests/headers/opaque-template-inst-member-2.hpp
@@ -0,0 +1,20 @@
+// bindgen-flags: --opaque-type 'OpaqueTemplate'
+
+// This is like `opaque-template-inst-member.hpp` except exercising the cases
+// where we are OK to derive Debug.
+
+template<typename T>
+class OpaqueTemplate {
+ T mData;
+};
+
+// Should derive Debug.
+class ContainsOpaqueTemplate {
+ OpaqueTemplate<int> mBlah;
+ int mBaz;
+};
+
+// Should also derive Debug.
+class InheritsOpaqueTemplate : public OpaqueTemplate<bool> {
+ char* wow;
+};