summaryrefslogtreecommitdiff
path: root/tests/expectations
diff options
context:
space:
mode:
authorDavid Drysdale <drysdale@google.com>2021-11-26 01:42:47 +0000
committerGitHub <noreply@github.com>2021-11-26 02:42:47 +0100
commit7bd23291e29e1874f57a628e94d7632b3b367ae6 (patch)
treea7381f98e6fb46c2020bccb344e98ba0e38523ab /tests/expectations
parent04f5c0715832feee6c059128cd5cd70056e861f7 (diff)
Add --blocklist-file option (#2097)
Update Item to hold a `clang::SourceLocation` and use this to allow blocklisting based on filename. The existing code has a special case that always maps <stdint.h> integer types to corresponding Rust integer types, even if the C types are blocklisted. To match this special case behaviour, also treat these C <stdint.h> types as being eligible for derived Copy/Clone/Debug traits. Fixes #2096
Diffstat (limited to 'tests/expectations')
-rw-r--r--tests/expectations/tests/blocklist-file.rs94
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/expectations/tests/blocklist-file.rs b/tests/expectations/tests/blocklist-file.rs
new file mode 100644
index 00000000..fe00b5ab
--- /dev/null
+++ b/tests/expectations/tests/blocklist-file.rs
@@ -0,0 +1,94 @@
+#![allow(
+ dead_code,
+ non_snake_case,
+ non_camel_case_types,
+ non_upper_case_globals
+)]
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct SizedIntegers {
+ pub x: u8,
+ pub y: u16,
+ pub z: u32,
+}
+#[test]
+fn bindgen_test_layout_SizedIntegers() {
+ assert_eq!(
+ ::std::mem::size_of::<SizedIntegers>(),
+ 8usize,
+ concat!("Size of: ", stringify!(SizedIntegers))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<SizedIntegers>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(SizedIntegers))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<SizedIntegers>())).x as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(SizedIntegers),
+ "::",
+ stringify!(x)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<SizedIntegers>())).y as *const _ as usize
+ },
+ 2usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(SizedIntegers),
+ "::",
+ stringify!(y)
+ )
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<SizedIntegers>())).z as *const _ as usize
+ },
+ 4usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(SizedIntegers),
+ "::",
+ stringify!(z)
+ )
+ );
+}
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct StructWithBlocklistedFwdDecl {
+ pub b: u8,
+}
+#[test]
+fn bindgen_test_layout_StructWithBlocklistedFwdDecl() {
+ assert_eq!(
+ ::std::mem::size_of::<StructWithBlocklistedFwdDecl>(),
+ 1usize,
+ concat!("Size of: ", stringify!(StructWithBlocklistedFwdDecl))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<StructWithBlocklistedFwdDecl>(),
+ 1usize,
+ concat!("Alignment of ", stringify!(StructWithBlocklistedFwdDecl))
+ );
+ assert_eq!(
+ unsafe {
+ &(*(::std::ptr::null::<StructWithBlocklistedFwdDecl>())).b
+ as *const _ as usize
+ },
+ 0usize,
+ concat!(
+ "Offset of field: ",
+ stringify!(StructWithBlocklistedFwdDecl),
+ "::",
+ stringify!(b)
+ )
+ );
+}