summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
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-15codegen: Fix minor clippy warning.Emilio Cobos Álvarez
2022-03-15add attributes to dynamic functionsEmil Gardström
this includes comments and must_use annotations
2022-03-15tests: Remove testing_only_libclang_4 and expectationsDarren Kulp
2022-03-15ir: Make TargetInfo::new infallibleDarren Kulp
Now that we require Clang 5.0, there is no way for this function to return None.
2022-03-15clang: Stop accommodating libclang 4.0Darren Kulp
Closes #2166
2022-03-15codegen: Simplify abi support condition.Emilio Cobos Álvarez
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-18BINDGEN_EXTRA_CLANG_ARGS for dump_preprocessed_input.Nicklas Boman
Fixes #1723
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
2022-02-18tests: Remove clang-3.9 expectationsDarren Kulp
2022-02-18parser: Simplify handle_function_macro for clang 4.0+Darren Kulp
2022-02-18parser: Simplify parse_macro for clang 4.0+Darren Kulp
Here we delete a workaround that is no longer needed.
2022-02-18clang: Stop accommodating libclang 3.9Darren Kulp
2022-02-18Allow fully-qualified derivesJake Merdich
Adding a custom derive like "serde::Deserialize" results in a panic complaining that it is not a valid Ident. Derive params are not identifiers, so treat it as a token stream instead.
2022-02-18Fix an erroneous +x bit on a source code file.Adrian Taylor
2022-01-29Upgrade Clap to version 3Mateusz Mikuła
2022-01-29Mark all vtable functions as `unsafe extern "C"`Justin Moore
2022-01-29On second thought, don't generate virtual destructorsDr. Chat
2022-01-29Mark all vtable functions as `pub`Dr. Chat
2022-01-29Account for virtual destructorsDr. Chat
2022-01-29Pass the vtable's base class as the first parameterDr. Chat
2022-01-29Extremely basic Vtable generationDr. Chat
2021-12-29Change into PathBufMikuroXina
2021-12-29Derive some traitsMikuroXina
2021-12-29More detailed errorMikuroXina
2021-12-29Remove deprecation and ReplaceMikuroXina
2021-12-29Add non_exhaustiveMikuroXina
2021-12-29Remove 'error: ' partMikuroXina
2021-12-29Merge into new oneMikuroXina
2021-12-29Replace generate with gen in testMikuroXina
2021-12-29Impl Error trait for BindgenErrorMikuroXina
2021-12-29Add BindgenErrorMikuroXina
2021-12-29codegen: Don't automatically derive Debug and Copy for non-rust enums.Emilio Cobos Álvarez
Fixes #2143
2021-12-12Handle difference between clang and rust targets on RISC-V.Triss Healy
2021-12-07Fix warnings on testsMikuroXina
2021-12-07Remove fields never readMikuroXina
2021-11-26Add --blocklist-file option (#2097)David Drysdale
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
2021-11-26Drop 'static for pub const strings for rustc>1.17Alberto Planas
Constant and static declaration have a 'static live time by default, that is already elided since 1.17. Clippy complains on this kind of strings that are present in the generated code. This patch remove the 'static live time for those strings when rustc > 1.17 via a new added RustFeature. Fix #1612 Signed-off-by: Alberto Planas <aplanas@suse.com>
2021-11-26Typo fix: "in side" -> "inside"follower
2021-11-26allow custom derives on enumsEric Seppanen
Custom derives are just as useful on enums as they are on structs; not supporting this was an oversight. Adds a test that will fail to compile if the custom derive doesn't work on enums. This test fails without the codegen fix.
2021-10-30context: Escape the try keyword properlyFionera
2021-10-27Avoid case of a self-referential type alias.Adrian Taylor
This previously produced a type alias which referred to itself, which was clearly wrong and resulted in downstream code recursing infinitely. The problem case (per bug #2102) is: template <typename> class B{}; template <typename c> class C { public: using U = B<c>; }; class A : C<A> { U u; }; As far as I can tell, we parse clang's definition of B<A>; that leads us to parse A; to find it has a field U which turns out to be of type B<A>. And so we hit the line in item.rs which says: debug!("Avoiding recursion parsing type: {:?}", ty); and bail out, returning the original item ID: hence, a self- referential typedef is created. The 'fix' in this PR creates an opaque type in this case instead, to avoid later infinite loops. It would be preferable to avoid this situation in the first place, but presumably that would require us to split the parsing phase into two: 1) types 2) fields within those types. Fixes #2102.
2021-10-27Don't generate 2^64 byte padding fields on unionsTheodore Dubois
The --explicit-padding flag would make bindgen try to add tail padding to rust unions, by adding up the size of all the union fields and subtracting from the size of the union as given by clang. The total size of a union's fields is always larger than the union, so the subtraction underflowed and bindgen produced padding fields larger than addressable RAM.
2021-10-27Avoid transmuteMikuroXina
2021-10-27Fix separator and treating expressionMikuroXina
2021-10-27Fix repetetionMikuroXina