summaryrefslogtreecommitdiff
path: root/tests/headers
AgeCommit message (Collapse)Author
2021-07-16Let Rust derive everything but Default for large arrays in 1.47 and laterIan P. Cooke
Fixes #1977 as of rust-lang/rust#74060 is available since Rust 1.47 Fixes #2041. Closes #2070.
2021-07-16Allow explicit padding (#2060)Eric Seppanen
If a struct needs to be serialized in its native format (padding bytes and all), for example writing it to a file or sending it on the network, then explicit padding fields are necessary, as anything reading the padding bytes of a struct may lead to Undefined Behavior.
2021-06-21comp: Do a better effort of computing packedness before bitfield units.Emilio Cobos Álvarez
Fixes #2067
2021-05-18Identify forward declarations in params. (#2052)Adrian Taylor
2021-04-30Don't generate bindings for deleted member functions. (#2044)Martin Boehme
Closes #2044 Fixes #2043 See https://github.com/rust-lang/rust-bindgen/issues/2043 for details.
2021-04-30Add a C naming option (#2045)Boris-Chengbiao Zhou
Closes #2045. Fixes #1252.
2021-04-27Translate types that were declared inside functions as opaque types.Patrick Walton
This fixes a panic with the following header: template<typename T> struct Foo {}; template<typename T> Foo<T> foo{}; void f() { struct Bar { Bar() {} }; foo<Bar>; } Because we don't parse the insides of function bodies, code like this could cause us to parse a type (here, `Bar`) that we didn't see in our initial pass, which can cause subtle problems. Closes #2036.
2021-04-11Fix docstring comment for constantsNico Chatzi
2021-04-03codegen: Deal with overloads in method code generation.Emilio Cobos Álvarez
Fixes #2019
2021-04-03Add a flag to ensure all symbols are resolved when a library is loadedDr. Chat
2021-03-22Add callback to check derives for blocklisted typesJethro Beekman
Fixes #1454 #2003
2021-03-22Use original name when checking allowlist for anonymous enum variantsJethro Beekman
2021-03-14Add option to translate enum integer types to native Rust integer typesJethro Beekman
Fixes #430
2021-03-11Revert "Add flag to ignore type blocklist when computing derive information"Emilio Cobos Álvarez
This reverts commit 7286c815f80b14c0ee77773387434da40f511b42, because it was not intended to be merged after all, see https://github.com/rust-lang/rust-bindgen/pull/2003#issuecomment-796160427.
2021-03-11Add flag to ignore type blocklist when computing derive informationJethro Beekman
Fixes #1454
2021-02-18Rename whitelist -> allowlist and blacklist -> blocklistMarcel Hlopko
For the commandline arguments I added undocumented aliases to old flags, to stay backwards compatible.
2021-02-07codegen: Track union layout more accurately.Emilio Cobos Álvarez
Instead of always generating the _bindgen_union_align method (which shouldn't be needed at all for Rust structs, since the struct layout tracker already deals with adding repr(align) as necessary) make sure to visit all fields appropriately to generate the correct alignment.
2021-01-29Generate fields as non-pub if they would be access restricted in C++.Weston Carvalho
2020-12-20comp: Fix bitfields to allow underaligned fields after them to take padding ↵Emilio Cobos Álvarez
space. Fixes #1947. There are two separate issues here: First, the change in comp.rs ensures that we don't round up the amount of storage to the alignment of the bitfield. That generates the "expected" output in #1947 (`__BindgenBitfieldUnit<[u8; 3], u16>`). But that's still not enough to fix that test-case because __BindgenBitfieldUnit would be aligned and have padding, and Rust won't put the extra field in the padding. In order to ensure the bitfield starts at the right alignment, but that Rust can put stuff in the extra field, we need to make a breaking change and split the generated fields in two: One preceding that guarantees alignment, and the actual storage, bit-aligned. This keeps the existing behavior while fixing that test-case.
2020-12-20context: Escape the dyn keyword properly.Emilio Cobos Álvarez
Fixes #1946
2020-12-19tests: Add another fit-macro-constant-types test.Emilio Cobos Álvarez
2020-12-19Add option to fit macro consts into smaller typesAntoni Simka
Add a `--fit-macro-constant-types` option to make bindgen try to fit macro integer constants into types smaller than u32/i32. Useful especially when dealing with 8/16-bit architectures. Closes #1945
2020-12-02cli: Expose module_raw_lines to the CLI.Emilio Cobos Álvarez
This makes command_line_args properly return them, instead of dropping them on the floor.
2020-11-28struct_layout: Fix field offset computation for packed(n) structs.Emilio Cobos Álvarez
This can cause unnecessary padding to be computed otherwise at the end of the struct. With repr(packed(n)), a field can have padding to adjacent fields as long as its alignment is less than n. So reuse the code we have to align to a field layout, aligning to the struct layout instead. Fixes #1934
2020-11-26Add --no-default <regex> flagVarphone Wong
Sometimes, we need customize the implement of `Default` for certain types, In these cases, the `nodefault` annotation can be used to prevent bindgen to autoderive the `Default` traits for a type.
2020-11-25dyngen: Handle variadic functions.Emilio Cobos Álvarez
Right now trying to generate a dynamic library with variadic functions panics because we don't account for the extra `...` in the arguments. Keeping the current interface for variadic functions is tricky, as we cannot "wrap" a variadic function (VaList[1] is nightly-only). However, we don't need to. We're already exposing the libloading error, so exposing the function pointer field as public is just fine and allows consumers to call the variadic function. At that point the can_call() / CheckFoo libraries become pointless (you can just do library.function.is_ok() or such), so we can simplify the code as well removing those. [1]: https://doc.rust-lang.org/std/ffi/struct.VaList.html
2020-11-25Add tests for dynamic binding generationJoe Ellis
2020-10-16codegen: Allow to not derive Debug on enums.Emilio Cobos Álvarez
Fixes #1899. This code predated all the derive machinery, and always hardcoded its derives. We could avoid hard-coding the other traits, but those seem usually-useful, so leave them there for backwards compat for now.
2020-09-16Updates base on commentsSebastian Imlay
* Added TryInto trait implementation from parent to child interfaces. * Added HashSet for protocols so that the protocol inheritance works as well.
2020-08-25Added constructor return type for wasm32 target (#1877)Emilio Cobos Álvarez
2020-08-25tests: Improve enum tests to avoid duplication, and add a test for #1880Emilio Cobos Álvarez
2020-08-24Optimized condition order, added regression testAudrius
2020-08-15Added Bindgen names to objective-c pointer return typesSebastian Imlay
* Took advantage of the repr transparent to use Bindgen return type names. * Updated unit tests and book
2020-08-09Add --default-macro-constant-typeChih-Hung Hsieh
* --default-macro-constant-type could be 'signed' or 'unsigned' * Its default value is 'unsigned' to use u32/u64 for C macro constants that fit into the u32/u64 ranges. * For old C libraries that use macros as int/long parameter and/or return value types, their macros are better declared as i32/i64 if the values fit the i32/i64 ranges, to be compatible with c_int/c_long types. They can use "--default-macro-constant-type signed"
2020-08-04Add --anon-fields-prefix optionVarphone Wong
Allow to use the given prefix for the anon fields instead of `__bindgen_anon_`.
2020-08-04Fixed const-ness of multidimensional arraysJoseph Angelo
2020-08-03tests: Add a test for bool enum with an alias.Emilio Cobos Álvarez
2020-08-03Add --no-debug <regex> flagVarphone Wong
2020-08-03Improves bindings for typed and anonymous enumsCameron Mulhern
2020-07-01Introduce expectation test for operator namesDarren Kulp
2020-06-08Mangle items with the same name as Rust primitive typeskellda
2020-05-18add command-line option for disabling untagged unionsNathan Froyd
One more thing that we can configure from the command line.
2020-05-14ir: Fall back to get the cursors from the type if we find no param decls.Emilio Cobos Álvarez
It seems libclang sometimes doesn't expose the right paramdecl cursors. This should be reported upstream, but it's easy enough to workaround. It loses the parameter names which is a bit unfortunate but... Fixes #1778
2020-05-11Added inheritance to objective-c support.Sebastian Imlay
2020-05-04Add testStephen Crane
2020-02-17var: Constant arrays of const elements should not generate `static mut`s.Emilio Cobos Álvarez
Fixes #1727
2020-02-03options: Add an opt-in to recover the size_t behavior removed in 5d38f2ac.Emilio Cobos Álvarez
2020-02-02ir: codegen: Handle too large bitfield units.Emilio Cobos Álvarez
By not generating various code for it. In the future, we could improve on this by splitting contiguous bitfield units, if needed, so that we can implement them without dealing with rust array derive limits. Fixes #1718
2020-01-29ir: Account for packedness when computing bitfield sizes.Emilio Cobos Álvarez
Fixes #1716
2020-01-05Added non-keyword support to objective-c methods.Sebastian Imlay