summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2022-10-04split the repo into a workspaceChristian Poveda
remove `clap` dependency :tada: update the book installation instructions
2022-10-03address clippy lintsChristian Poveda
2022-10-02Enables blocklisting of Objective-C methodsCameron Mulhern
2022-09-28Don't traverse through special-cased <stdint.h> types.Geoffry Song
2022-09-23Map size_t to usize by default and check compatibility (fixes #1901, #1903)Geoffrey Thomas
This addresses the underlying issue identified in #1671, that size_t (integer that can hold any object size) isn't guaranteed to match usize, which is defined more like uintptr_t (integer that can hold any pointer). However, on almost all platforms, this is true, and in fact Rust already uses usize extensively in contexts where size_t would be more appropriate, such as slice indexing. So, it's better for ergonomics when interfacing with C code to map the C size_t type to usize. (See also discussion in rust-lang/rust#65473 about how usize really should be defined as size_t, not uintptr_t.) The previous fix for #1671 removed the special case for size_t and defaulted to binding it as a normal typedef. This change effectively reverts that and goes back to mapping size_t to usize (and ssize_t to isize), but also ensures that if size_t is emitted, the typedef'd type of size_t in fact is compatible with usize (defined by checking that the size and alignment match the target pointer width). For (hypothetical) platforms where this is not true, or for compatibility with the default behavior of bindgen between 0.53 and this commit, onwards, you can disable this mapping with --no-size_t-is-usize.
2022-09-22features: Bump LATEST_STABLE_RUST after #2267.Emilio Cobos Álvarez
2022-09-22update to rust 1.64Christian Poveda
2022-09-22put tests behind the `nightly` featureChristian Poveda
2022-09-22use `#[feature(core_ffi_c)]` when availableChristian Poveda
2022-09-22test: add test for GH-422Amanjeev Sethi
GitHub issue 422 was fixed but needs a test. https://github.com/rust-lang/rust-bindgen/issues/422 Signed-off-by: Amanjeev Sethi <aj@amanjeev.com>
2022-09-23Add option to deduplicate extern blocks (#2258)Christian Poveda
2022-09-23Option to wrap union members in ManuallyDrop (#2185)Poliorcetics
2022-09-22add the `-- -std=c++11` flagChristian Poveda
2022-09-22handle `__attribute__((noreturn))` attributeChristian Poveda
2022-09-22handle c++ `[[noreturn]]` attributeChristian Poveda
2022-09-22gate `_Noreturn` detection behind `--enable-fucntion-attribute-detection`Christian Poveda
2022-09-22add testsChristian Poveda
2022-09-18fix `--newtype-global-enum` optionChristian Poveda
2022-09-11add `--newtype-global-enum` optionChristian Poveda
2022-09-08fix clippy lintsChristian Poveda
2022-08-25Generate opaque type for template param dependent bit field widthCollin Baker
libclang's API does not provide a straightforward way to check for this, and calling clang_getFieldDeclBitWidth is actively unsafe in this case. See https://github.com/llvm/llvm-project/issues/56644 We probably can't generate reasonable bindings for such a type, so make the binding opaque. Ideally libclang would report if the bit width could not be evaluated. Unfortunately making such a change would mean bumping the minimum libclang version from 6.0 to 15.0. Instead, add logic to traverse the AST subtree starting from the field's bit width specifier looking for template parameters. If we find one, we make the resulting type opaque.
2022-08-25Sorting the output semantically (#2254)Amanjeev Sethi
Generated code needs some sorting in a way that is semantically appealing. The request[1] asks for basic sorting like "types are declared first, then all structs, then all consts, then all function signatures, etc. [1] https://github.com/rust-lang/rust-bindgen/issues/1743 Signed-off-by: Amanjeev Sethi <aj@amanjeev.com> Co-authored-by: Christian Poveda <christian.poveda@ferrous-systems.com> Co-authored-by: Darren Kulp <darren@kulp.ch>
2022-08-18remove macro in favor of a methodChristian Poveda
2022-08-18test warning emissionChristian Poveda
2022-08-09Add test coverage for 'await' and 'async' keywordsBryn M. Reeves
Add declarations for 'await' and 'async' variables to keywords.h and update the expectations in keywords.rs.
2022-07-25ty: Use canonical type to access pointee.Emilio Cobos Álvarez
Using the canonical type fixes this but changes the output of some tests (in particular, pointer to typedefs now point to the underlying type). So do this only in known-bad cases. Fixes #2244
2022-07-16Extract pointer once for all alignment testsonalante-msft
2022-07-16Regenerate tests targeting libclang 5onalante-msft
2022-07-16Regenerate tests targeting libclang 9onalante-msft
2022-06-06Update test expectations.Emilio Cobos Álvarez
2022-06-06tests: Make some other tests auto-update with BINDGEN_OVERWRITE_EXPECTED=1Emilio Cobos Álvarez
2022-06-05Skip input headers in Linguist statisticsDarren Kulp
[skip ci]
2022-06-05Skip generated files in Linguist statisticsDarren Kulp
[skip ci]
2022-06-05ir: Centralize must_use checks and simplify codegen.Emilio Cobos Álvarez
2022-06-05Look for `must_use` on typdefs in function returnIan Chamberlain
Closes #2206
2022-05-17Fix "dereferencing a null pointer" in C layout testsGavin Li
Instead of dereferencing a null pointer, create a MaybeUninit from which we can extract well-defined addresses.
2022-05-08Derive from any other trait only when deriving from CopyMichal Rostecki
It's impossible to #[derive] from any other trait when not deriving from Copy when using the newest Rust nightly. Any attempt to do that results in the following error: error: `#[derive]` can't be used on a `#[repr(packed)]` struct that does not derive Copy (error E0133) Fixes: #2083 Signed-off-by: Michal Rostecki <vadorovsky@gmail.com>
2022-04-19Use common type alias for anonymous enums in consts modeAlan Wu
Previously, anonymous enums generated a type alias but did not use it. For example the following: ```C enum { ZERO, ONE = 4999, }; ``` Generated this: ```Rust /* automatically generated by rust-bindgen 0.59.2 */ pub const ZERO: ::std::os::raw::c_uint = 0; pub const ONE: ::std::os::raw::c_uint = 4999; pub type _bindgen_ty_1 = ::std::os::raw::c_uint; ``` For use cases where humans look at bindgen's Rust output this was a little strange since it's a deviation from how the Rust output for named enums is organized, where all constants share the same type using the type alias. The unused type alias also triggered the dead_code lint. Change to use the generated type alias.
2022-03-15add attributes to dynamic functionsEmil Gardström
this includes comments and must_use annotations
2022-03-15disable test_clang_env_args on windowsEmil Gardström
2022-03-15disable some tests on windowsEmil Gardström
This is due to differences in representation of `signed long` and `unsigned long` on most Linux-based systems and Windows (`64` vs. `32` bits)
2022-03-15disable layout tests for `derive-custom` and `convert-cpp-comment-to-rust` testEmil Gardström
2022-03-15escape `\` in paths for tests modulesEmil Gardström
2022-03-15tests: Remove testing_only_libclang_4 and expectationsDarren Kulp
2022-03-15tests: Enable a test with a const template paramDarren Kulp
This should have been added in #2155 but was missed then.
2022-03-15Added support for `vectorcall` ABIDavid Cole
2022-03-15Fix macOS test expectationsSebastian Imlay
* Updated tests/expectations/Cargo.toml to use 2018 rust. * Added Debug and Copy to objective-c structs. * Fixed lifetimes in objective-c trait templates. * Fixed imports for objective-c expectations tests.
2022-02-18codegen: Use raw pointers rather than references in vtable functions.Emilio Cobos Álvarez
Closes #2163
2022-02-18Put vtable generation behind a flag for now.Emilio Cobos Álvarez
2022-02-18Add --allowlist-file optionDavid Drysdale