255 Commits

Author SHA1 Message Date
Mike Hommey 9b4a14958e Add support for out-of-line bitfields declarations 2023-09-12 10:28:58 +02:00
sevenc-nanashi 0fb5d07ae4 Add support for #[deprecated].
Closes #875.
Closes #860.
Closes #408.
2023-09-04 20:18:44 +02:00
Jannis Ruh d8355da466 Support "C-unwind" ABI
Closes #864
2023-09-04 20:12:55 +02:00
Jonathan Schwender 51a981cefc Rename expectations files
Rename expectation files to contain only one dot.
This is needed for the Cython tests as of Cython 3.
The following script was used in a clean repository
to rename the files:

```sh
 ls | sed -E -n 's/(.*)\.(both|tag)?((\..*)?\.(c|cpp|pyx))/mv "\1.\2\3" "\1_\2\3"/p' | sh
```
2023-09-04 19:37:45 +02:00
Marin Veršić 5f235ec199 generate bindings for non-public extern items
Signed-off-by: Marin Veršić <marin.versic101@gmail.com>
2023-08-25 11:11:16 -04:00
Sjors Holtrop c8546ad42d Parse ... as a VaList 2023-05-29 21:33:25 +02:00
Emilio Cobos Álvarez 66bc17facf Add a test for function pointer text wrapping. 2022-11-10 14:23:33 +01:00
Emilio Cobos Álvarez 47b1d1de1e Handle never type in return position consistently.
Fixes #779
2022-08-30 15:47:58 +02:00
Emilio Cobos Álvarez 116a18c2fd tests: Add a test for struct constants going through typedefs. 2022-06-09 21:10:33 +02:00
Emilio Cobos Álvarez 80da6045ec bitflags: Be explicit in binary operators and such.
This allows having explicit + default constructor without build issues.
2022-06-07 21:32:28 +02:00
Emilio Cobos Álvarez 5da3715187 constant: Add support for unary negation. 2022-06-07 18:48:48 +02:00
Emilio Cobos Álvarez 021d09db2b bitflags: Make more operations constexpr. 2022-06-07 18:48:48 +02:00
Emilio Cobos Álvarez 597b033ccf constant: Support suffixes for integers that otherwise would be narrowed. 2022-06-07 16:19:40 +02:00
Jason Orendorff a79a10d9a6 Fix specialization of SomeType<N> when N is a const parameter.
Fixes #761.
2022-05-25 10:41:44 +02:00
Jason Orendorff dde68cc439 Support char-like byte literals. 2022-05-25 10:40:32 +02:00
Jason Orendorff caf69c8800 Support bool and char literals as arguments to const generics. 2022-05-25 10:40:32 +02:00
Jason Orendorff c732069b2e New type GenericParam represents a generic parameter. 2022-05-09 16:13:39 +02:00
Emilio Cobos Álvarez 305ccfe746 constant: Make const.allow_constexpr default to true. 2022-04-21 18:48:00 +02:00
Emilio Cobos Álvarez 15e1131160 constant: Allow more constexpr constants. 2022-04-21 18:48:00 +02:00
kavoor 5b418d968c Support rename rule for union body members.
Closes #751.
2022-04-19 11:22:04 +02:00
Emilio Cobos Álvarez 770f352375 constant: Add support for other expressions WebRender uses. 2022-04-14 23:41:07 +02:00
Emilio Cobos Álvarez 882af0b563 constant: Add support for associated constant expressions.
These are useful for bitflags.
2022-04-14 23:41:07 +02:00
Jordan Rose 20ddfffb6a Fix regression in CamelCase rename rule (should be lowerCamelCase) 2022-04-05 22:54:52 +02:00
Emilio Cobos Álvarez 09284108eb enumeration: simplify standard types in variants.
Fixes #745
2022-04-04 20:25:01 +02:00
Vadim Petrochenkov ca7a942ce5 Cython: Omit per-variant tags in unions generated for Rust enums
The common `tag` should already be enough, al other tags are identical to it.
In Cython case they only create noise because the declarations only introduce names and do not determine layouts.
2022-03-31 21:57:16 +02:00
Olivier Goffart ed8d94619f unraw the identifiers
Fixes https://github.com/eqrion/cbindgen/issues/410
2021-12-14 16:18:41 +01:00
Emilio Cobos Álvarez a1694cd57c ir: Honor documentation_length in Cython. 2021-11-02 11:31:30 +01:00
Sean McArthur 0e3f9bd9cb Add documentation_style to with short and full options 2021-11-02 11:13:49 +01:00
Emilio Cobos Álvarez 577b041933 tests: Add a test for #708 2021-08-24 11:44:51 +02:00
Kendall Koning 63c1043dfb Simplify Pin<T> to T
cbindgen already simplifies `MaybeUninit<T>` and `ManuallyDrop<T>` to `T`. This adds `Pin<T>` as well.
2021-06-19 20:48:57 +02:00
Emilio Cobos Álvarez a9af0ad5ad ir: Tweak monomorphization to instantiate recursively after inserting to the replacements map.
That way the check to prevent double-instantiation also works to prevent
infinite recursion.
2021-04-07 13:26:35 +02:00
Emilio Cobos Álvarez 52de917d25 parser: Fix handling of #[path] attributes inside inline submodules.
As seen in hashbrown:

    #[cfg(feature = "raw")]
    /// Experimental and unsafe `RawTable` API. This module is only available if the
    /// `raw` feature is enabled.
    pub mod raw {
        // The RawTable API is still experimental and is not properly documented yet.
        #[allow(missing_docs)]
        #[path = "mod.rs"]
        mod inner;
        pub use inner::*;

        #[cfg(feature = "rayon")]
        pub mod rayon {
            pub use crate::external_trait_impls::rayon::raw::*;
        }
    }
2021-04-07 13:25:57 +02:00
Marc-André Lureau ccea33ecb4 tests: check renaming enum affects variant prefix
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2021-03-29 14:08:02 +02:00
Emilio Cobos Álvarez aaef260faf ir: Simplify types in generics.
This was an oversight in 1903686f9e
because the code I grabbed to visit the generics was dealing with them
somewhere else.
2021-03-02 20:11:39 +01:00
Emilio Cobos Álvarez 7312b997be ir: simplify_standard_types should be recursive.
Stuff like *mut Option<&mut Foo> should really be *mut *mut Foo for
example.
2021-02-24 18:36:40 +01:00
Emilio Cobos Álvarez c5c301b08a ir: Support pointers to zsts.
Fixes #654
2021-02-01 13:56:45 +01:00
Emilio Cobos Álvarez 750745831a ir: Deal with name conflicts correctly in declaration type resolution.
So, basically, make opaque items last, and make previous names override
them.

Fixes #649
2021-01-26 12:55:05 +01:00
Emilio Cobos Álvarez c47ee1516b ir: Handle NonZero and simplify Option<NonZero> like we simplify Option<NonNull>.
Fixes #646
2021-01-14 23:39:59 +01:00
Emilio Cobos Álvarez f922f68531 ir: Avoid generating bogus pointer arguments.
Now that we track nullability in the pointer type it's easy to do it.

Fixes #223
2021-01-14 23:39:59 +01:00
Vadim Petrochenkov b82e375254 enum: Support inlined definitions for tuple variants with a single field 2020-12-09 19:38:21 +01:00
Yurii Rashkovskii 1963f0c92e Partially support #[cfg]s on fields 2020-12-06 13:10:15 +01:00
Vadim Petrochenkov dfcee869ba enum: Do not forget to rename entities in enum discriminants 2020-12-06 01:53:09 +01:00
Emilio Cobos Álvarez fbc2237b7d parser: Fix resolution of #[path] dependencies from certain modules.
We need the current mod dir to resolve #[path], not the one we get for
rust 2018.

Fixes #599
2020-11-30 19:44:45 +01:00
Vadim Petrochenkov 8997277cb7 enum: Break up Enum::write into multiple functions 2020-11-30 11:59:02 +01:00
Vadim Petrochenkov 7980288a94 Reenable some tests 2020-11-27 01:31:01 +01:00
Vadim Petrochenkov 98b7a3f9b9 cython: Leave out values of constants and enumerators
Keep them as documentation only
2020-11-27 01:31:01 +01:00
Wodann 68a1e65875 fix: default style to Both (as specified in docs)
Closes #615.
Closes #215.

Possibly closes others.
2020-11-25 18:04:30 +01:00
Wodann 5b5b46b7d6 fix: resolve path types for 'both' style 2020-11-25 17:55:58 +01:00
Emilio Cobos Álvarez 85a2f4c956 tests: Remove unneeded test file. 2020-11-25 17:50:38 +01:00
Vadim Petrochenkov b0aae44c77 Add two Cython-specific options to the config 2020-11-25 17:33:38 +01:00