Age | Commit message (Collapse) | Author |
|
|
|
Generate a separate test function for every header
- Header tests can now be run selectively, e.g.
`cargo test header` will test all headers
`cargo test union` will test headers with 'union' in the file name
- The list of test functions is generated by `build.rs`, so never needs to be updated
- Clever approach suggested by @fitzgen
This PR depends on #204, so will include those changes until they're merged into master and this can be rebased. But I'll keep the commits separate.
|
|
- Header tests can now be run selectively, e.g. `cargo test union`
will test all headers with 'union' in the file name.
- The list of test functions is generated by `build.rs`, so never
needs to be updated.
- Clever approach suggested by @fitzgen.
|
|
Split off bindgen library into a sub-crate
- Unfortunately there's a dependency on log via syntex_errors, so we
don't get rid of it all
- I can't find a more sensible way to set dependencies based on whether
you're building the lib or bin
- So `--no-default-features` means you need to know what you're doing,
as only the lib will build without the logging crates for now
- The replacement log macros are pretty gross too, but they show a proof
of concept ;-)
|
|
|
|
|
|
- The root crate is the `bindgen` binary
- Rust-ify the test suite, no more subprocesses!
- Update Travis config to test both crates
|
|
ir: Make the id local to the context.
|
|
|
|
Template alias full and partial specialization improvements.
This doesn't completely fix #251, but fixes other related problems.
r? @fitzgen
|
|
|
|
Add more logging for item insertion and asserts
This adds `debug!` logging for all paths that insert items into
`BindgenContext::items`, and adds some `debug_assert!`s against dangling
`ItemId`s.
r? @emilio
|
|
This adds `debug!` logging for all paths that insert items into
`BindgenContext::items`, and adds some `debug_assert!`s against dangling
`ItemId`s.
|
|
codegen: Always implement debug for __BindgenUnionField.
Our debug-detection code assumes so.
Fixes #246
r? @fitzgen
|
|
Clean up TypeCollector implementations
Rather than making `TypeCollector` implementations recursively call
`collect_types` on their subtypes, just gather immediate subtypes into
the `ItemSet`. The subtypes' `TypeCollector` implementation will be
recursively called by `WhitelistedItemsIter`. This makes it less likely
we will "skip" a layer by recursively calling `collect_types` on
some subtypes without adding the subtypes themselves to the set.
r? @emilio
|
|
Warn when giving up and assuming a named type
When we fail to parse Clang stuff into our IR and give up, and assume
that we are looking at a named template type, we now emit a warning to
assist with debugging.
r? @emilio
|
|
When we fail to parse Clang stuff into our IR and give up, and assume
that we are looking at a named template type, we now emit a warning to
assist with debugging.
|
|
Rather than making `TypeCollector` implementations recursively call
`type_collector` on their subtypes, just gather immediate subtypes into
the `ItemSet`. The subtypes' `TypeCollector` implementation will be
recursively called by `WhitelistedItemsIter`. This makes it less likely
we will "skip" a layer by recursively calling `collect_types` on
some subtypes without adding the subtypes themselves to the set.
|
|
Our debug-detection code assumes so.
Fixes #246
r? @fitzgen
|
|
Handle macro redefinition a bit more graciously.
r? @fitzgen
|
|
codegen: Special-case i64::MIN since it produces a overflow on aster.
Proper fix on aster soon, still worth to get this in I guess.
r? @fitzgen
|
|
Fix path detection after #228
r? @fitzgen
Too bad we can't test it on CI because CI has the path correctly setup :(
Fixes #242
|
|
r=emilio
clang::Cursor::referenced should return Option<clang::Cursor>
Fixes https://github.com/servo/rust-bindgen/issues/124
Since I am new to Rust, I hope I didn't do things too badly
|
|
|
|
|
|
Proper fix on aster soon, still worth to get this in I guess.
r? @fitzgen
|
|
r? @fitzgen
Fixes #242
|
|
Add support for bindings to overloaded functions
This commit (re)adds support for generating bindings to overloaded
functions. First, we use the symbol name instead of the canonical name
when checking if we have already generated bindings for a given
function. Second, we add a map from canonical names to number of times
we have generated a function with that canonical name. We increment this
number every time we generate a function. When the number is greater
than zero, we append it to the function name so that overloaded
functions get a unique Rust symbol.
Fixes #239
r? @emilio
|
|
This commit (re)adds support for generating bindings to overloaded
functions. First, we use the symbol name instead of the canonical name
when checking if we have already generated bindings for a given
function. Second, we add a map from canonical names to number of times
we have generated a function with that canonical name. We increment this
number every time we generate a function. When the number is greater
than zero, we append it to the function name so that overloaded
functions get a unique Rust symbol.
|
|
Use __BindegenComplex for C Complex
Fix #72
C complex only exists for floating point types
C Complex are built in types
long double _Complex is not supported.
Long double would be an f128, runing generated binding test produces:
assertion failed: `(left == right)` (left: `16`, right: `32`)',
tests/expectations/tests/complex.rs:72
We test global long double _Complex because it does not require
layout tests.
Handle all the different way a complex can be present in
BindgenContext calling generated_bindegen_complex to indicate
that __BindgenContext will need to be added.
|
|
C complex only exists for floating point types.
C Complex are built in types
long double _Complex is not supported.
Long double would be an f128, runing generated binding test produces:
assertion failed: `(left == right)` (left: `16`, right: `32`)',
tests/expectations/tests/complex.rs:72
We test global long double _Complex because it does not require
layout tests.
Handle all the different way a complex can be present in
BindgenContext calling generated_bindegen_complex to indicate
that __BindgenContext will need to be added.
|
|
Disable OSX builds on Travis CI
The wait time to get OSX machines on Travis CI is *way* too long at the
moment. We'll be able to revert this commit in the future, once Travis
CI adds more OSX machines to their cluster, hopefully.
r? @emilio
|
|
Add rudimentary support for `__float128`
This adds `__float128` as a builtin type, and generates an opaque array
of 16 `u8`s to represent it in the generated bindings since Rust doesn't
have an `f128` type.
Context and motivation: Somehow `__float128` is getting pulled into
SpiderMonkey headers from somewhere, and the lack of `__float128`
support was causing bindgen to hard fail in bindings generation.
r? @emilio
|
|
The wait time to get OSX machines on Travis CI is *way* too long at the
moment. We'll be able to revert this commit in the future, once Travis
CI adds more OSX machines to their cluster, hopefully.
|
|
This adds `__float128` as a builtin type, and generates an opaque array
of 16 `u8`s to represent it in the generated bindings since Rust doesn't
have an `f128` type.
Context and motivation: Somehow `__float128` is getting pulled into
SpiderMonkey headers from somewhere, and the lack of `__float128`
support was causing bindgen to hard fail in bindings generation.
|
|
Reformat
Automatic reformat running `cargo fmt` for the latest nits introduced.
r? @fitzgen
|
|
ir: Search for compound structures when we have unexposed type and base class cursor.
And it's not a valid identifier as a template parameter. See the comment and the
tests for details.
Better ideas for the check appreciated, but I was really sleepy to look for a better solution right now.
r? @fitzgen
|
|
Describe how to use `creduce` with `bindgen`
This commit extends CONTRIBUTING.md with information on how to use
`creduce` to minimize input header test cases that cause `bindgen` to
panic, generate bad bindings, or any other incorrectness.
r? @emilio
|
|
This commit extends CONTRIBUTING.md with information on how to use
`creduce` to minimize input header test cases that cause `bindgen` to
panic, generate bad bindings, or any other incorrectness.
|
|
|
|
class cursor.
And it's not a valid identifier as a template parameter. See the comment and the
tests for details.
|
|
Clap your hands say yeah! 👏🏻
In progress port to `clap`, obsoletes the `docopt` port in servo/rust-bindgen#202.
|
|
|
|
|
|
Parse macro expressions.
Clang is trolling me really hard so I'm going to see if the extra token I'm always getting is LLVM 3.9 specific.
|
|
|
|
|
|
|
|
Generate and add options for bitfield-like enums.
r? @fitzgen or @Manishearth
cc @bholley @upsuper @heycam
Followups:
* Reduce duplication a bit in that code (probably E-easy)
* Generate an impl of `BitOr` for bitfield-like enums (E-easy/E-less-easy).
|
|
default BitOr implementation.
|