12 Commits

Author SHA1 Message Date
Corey Farwell c6eb7c9d12 Add failing regression test for #1973. 2021-01-30 16:48:20 +01:00
Youmu 4656d34773 Add integration test for name matching 2020-09-15 00:18:51 +02:00
Sébastien Duquette 2f0aea26ce Add tests for renamed structure items 2018-11-10 20:32:29 -05:00
Sébastien Duquette 5820d34edb Add integration tests 2018-11-10 19:16:54 -05:00
Emilio Cobos Álvarez 5eb46a96b1 ir: Choose the right mangling for destructors on all codepaths.
Fixes #1133.
2018-01-29 15:48:34 +01:00
Nick Fitzgerald c930acc14f Support bitfield allocation units larger than 64 bits
Individual bitfields are still limited to at most 64 bits, but this
restriction can be weakened when Rust supports u128.

This implements issue #816.

Usage notes:

* Since common code is added to each generated binding, a program which uses
  more than one binding may need to work around the duplication by including
  each binding in its own module.
* The values created by bitfield allocation unit constructors can be assigned
  directly to the corresponding struct fields with no need for transmutation.

Implementation notes:

__BindgenBitfieldUnit represents a bitfield allocation unit using a Storage
type accessible as a slice of u8. The alignment of the unit is inherited from
an Align type by virtue of the field:

align: [Align; 0],

The position of this field in the struct is irrelevant.

The alignment of the Storage type is intended to be no larger than the
alignment of the Align type, which will be true if the Storage type is, for
example, an array of u8.

Although the double underscore (__) prefix is reserved for implementations of
C++, there are precedents for this convention elsewhere in bindgen and so the
convention is adopted here too.

Acknowledgement:

Thanks to @fitzgen for an initial implementation of __BindgenBitfieldUnit and
code to integrate it into bindgen.
2017-11-21 13:55:00 +00:00
Emilio Cobos Álvarez 63b7c22d77 codegen: Fix bitfield getter/setters so they work with NPOT sizes. 2017-06-18 02:09:28 +02:00
Emilio Cobos Álvarez 016e72a626 ir: Fix a bunch of bitfield correctness issues.
In particular, the "flush the allocation unit" logic is only valid for
ms_structs (that is, MSVC).

It's slightly annoying to have this different behavior, but it'd work just fine
if we'd turn that on for MSVC.

This patch doesn't do that, yet at least, and adds tests for all the weird
bitfield alignments around.

Fixes #726 (and another set of hidden issues by the old code).
2017-06-05 20:05:01 +02:00
Emilio Cobos Álvarez d33bdcee48 codegen: Add integration tests for destructors. 2017-04-04 01:05:35 +02:00
Nick Fitzgerald ad4013130e Reintroduce bitfield accessors
This commit reintroduces accessor methods for bitfields in the generated
bindings.

Fixes #519
2017-03-09 09:55:57 -08:00
Emilio Cobos Álvarez ff71d278f2 tests: Add an integration test for static arrays.
Turns out they were broken before
https://github.com/servo/rust-bindgen/issues/456.

Let's test it so it doesn't regress.
2017-01-30 00:17:28 +01:00
Emilio Cobos Álvarez 641e555fde Add support for constructors, and integration tests. 2016-12-13 14:33:01 +01:00