summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2017-08-09Class related tests for derive HashZhiting Zhu
2017-08-09Struct related tests for derive HashZhiting Zhu
2017-08-09Union related tests for derive Hashzzhu
2017-08-05fix test for explicitly typed enum on aarch64Niv
2017-08-04Revert "Add --rust-target to replace --unstable-rust"Nick Fitzgerald
This reverts commit 0bb7b9f1c4652f63f41eba4064b79c044fd3d955. It turns out our CI stopped running test expectations in an earlier regression (from d73507e; fix incoming) and so this pull request actually introduced a bunch of failures when compiling the test expectations and running their unit tests :(
2017-08-04Add --rust-target to replace --unstable-rustTravis Finkenauer
Instead of specifying whether or not to use stable, specify the Rust release to support (one of several stable/beta releases or nightly). The --unstable-rust option is still accepted and implies nightly. The definitions of `RustTarget` and `RustFeatures` are created with macros. For each test that uses unions, there is a version that uses the latest stable release and stable 1.0.
2017-08-02Fix recursive whitelisting and handling of opaquezzhu
Fix regression of derive default analysis. Also fix opaque handing exposed by the above fix.
2017-08-01Not derive Copy for C flexible array memberWangshan Lu
2017-08-01Support deriving copy for large arrayWangshan Lu
2017-07-31Auto merge of #861 - photoszzt:derive_default, r=fitzgenbors-servo
Can derive default analysis r? @fitzgen
2017-07-31Stablize name of pointer and arrayXidorn Quan
2017-07-27can derive default analysiszzhu
2017-07-28Test for #848.Emilio Cobos Álvarez
2017-07-26Be conservative about deriving Debug/Default with large alignmentNick Fitzgerald
When there is large enough alignment that we might generate padding which has more members that `RUST_DERIVE_IN_ARRAY_LIMIT`, we can break our ability to derive traits. This commit solves this issue conservatively: there are cases where we leave a derive on the table, because in order to know that we could add that derive, we would need to compute padding before we determine whether we can derive. Fixes #648
2017-07-25s/servo/rust-lang-nursery/ \o/Nick Fitzgerald
Fixes #852
2017-07-24Test to exercise the can-derive-debug case for opaque templatesNick Fitzgerald
2017-07-24Fix opaque template test to exercise the cannot derive caseNick Fitzgerald
And also not just fields, but also base members.
2017-07-24A `ResolvedTypeRef` is opaque if it points to another opaque typeNick Fitzgerald
2017-07-22Never use spaces in generated name (fixes #844)Manish Goregaokar
2017-07-22analysis: Account for template instantiations of opaque types in the derive ↵Emilio Cobos Álvarez
debug analysis. We have a special-case for them in codegen to generate a blob, that can derive debug. This is a regression from #824, and hit stylo.
2017-07-21ir: Track the codegen-reachable items, and use it instead of ↵Emilio Cobos Álvarez
whitelisted_items() for code generation. This standardizes the behavior change at #834, but without regressions. I've added a few more tests for #833 here.
2017-07-21Test.Emilio Cobos Álvarez
2017-07-21Auto merge of #829 - servo:disambig, r=emiliobors-servo
Use fully disambiguated name instead of a number for layout tests (fixes #394) These numbers cause tons of churn in the diffs for checked in bindings. r? @fitzgen
2017-07-20Use fully disambiguated name instead of a number for layout tests (fixes #394)Manish Goregaokar
2017-07-20Only whitelist items which we intend to generate code forNick Fitzgerald
This makes only generating certain kinds of items more robust, since we don't need to keep checking whether codegen is enabled for different kinds of items all over the place, and can do it the once. It should also reduce the number of items we have to consider in our various analyses for which we don't ultimately care about the answer. Fixes #826
2017-07-20Auto merge of #823 - fitzgen:issue-820-unused-template-param-in-alias, r=emiliobors-servo
Implement `IsOpaque` for `CompInfo` This allows us to properly detect structs that should be treated as opaque due to their non-type template paramaters, which in turn lets us correctly codegen template aliases to such things. Fixes #820 r? @emilio
2017-07-20Implement `IsOpaque` for `CompInfo`Nick Fitzgerald
This allows us to properly detect structs that should be treated as opaque due to their non-type template paramaters, which in turn lets us correctly codegen template aliases to such things. Fixes #820
2017-07-20Use a platform-neutral header for test_multiple_header_calls_in_builderXidorn Quan
2017-07-20Skip no_system_header_includes test for WindowsXidorn Quan
2017-07-20Have tests targetting Linux by default on WindowsXidorn Quan
2017-07-18Auto merge of #817 - fitzgen:include-comments-in-preprocessed-file, r=emiliobors-servo
Preserve comments when dumping preprocessed input headers It should be really easy to generate standalone, isolated test cases for bindgen bugs now \o/ See each commit for further details. r? @emilio
2017-07-18Stop Rust from prepending underscore before '?' for win32Xidorn Quan
2017-07-17Preserve comments when dumping preprocessed input headersNick Fitzgerald
The -C flag tells Clang's preprocessor not to strip comments, but unfortunately Clang will only accept it when dumping the preprocessed file to stdout, which is the -E flag. This means that we need to capture the child process's stdout and then copy it to a file ourselves now.
2017-07-13Add the ability to dump preprocessed input headersNick Fitzgerald
This is useful when debugging bindgen, using C-Reduce on an input to bindgen, or for constructing portable test cases when filing issues against bindgen. Fixes #811
2017-07-12Fix tracing of opaque typesNick Fitzgerald
This makes tracing opaque types' edges match what we codegen for opaque types. Although we still generate constructors, methods, etc for opaque types (just not fields and base members) we were not tracing them. Fixes #807
2017-07-10codegen: Make comments indentation-aware.Emilio Cobos Álvarez
This commit moves comment processing to a central place (well, two, because of field docs, but that's fine). Also, it makes comments indentation aware, so multiline comments don't appear garbled. Finally, it also fixes an out-of-bounds panic when processing an empty multiline comment.
2017-07-09codegen: Fix some sloppiness in our handling of opaque types.Emilio Cobos Álvarez
Fixes #801
2017-07-08Auto merge of #791 - dylanmckay:preprocess-doc-comments, r=emiliobors-servo
Intelligently convert C/C++ comments to Rust With this change, we can correctly parse C++ block comments. ```cpp /** * Does a thing * * More documentation. This test does something * useful. */ ``` into ```rust /// Does a thing /// /// More documentation. This test does something /// useful. ``` Fixes servo/rust-bindgen#426.
2017-07-08Intelligently convert C/C++ comments to RustDylan McKay
With this change, we can correctly parse C++ block comments. ``` /** * Does a thing * * More documentation. This test does something * useful. */ ``` into ``` /// Does a thing /// /// More documentation. This test does something /// useful. ``` Fixes servo/rust-bindgen#426.
2017-07-07Auto merge of #796 - tz70s:master, r=fitzgenbors-servo
Automatically detect libclang version when testing Automatically detect libclang version when testing and use approppriate expectation files. Ref to issue #794.
2017-07-08Automatically detect libclang version when testingtz70s
Automatically detect libclang version when testing and use approppriate expectation files. Ref issue #794.
2017-07-07Auto merge of #795 - fitzgen:no-system-includes, r=emiliobors-servo
No system includes in test headers See each commit message. Disallowing *system* includes and not *all* includes because we have one local include in `extern.hpp`, and local includes will at least be consistent/reproducible. r? @emilio
2017-07-06Run the ./ci/no-includes.sh test from `cargo test`Nick Fitzgerald
Convenience to help developers catch this earlier, rather than only after pushing a pull request.
2017-07-06ir: Properly skip inline namespaces when building names.Emilio Cobos Álvarez
Fixes #789
2017-06-30Fix tests/test-one.sh.Holger Rapp
On Mac OS where egrep is != GNU grep, the script fails with ~~~ egrep: repetition-operator operand invalid ERROR: no files found with pattern "virtual_inheritance" ~~~~ The `$pattern` is supposed to be a substring in the test name to run. The leading and trailing stars are wrong, since egrep takes a regular expression, not a glob.
2017-06-23Add mangling hack for iosKevin Lefevre
2017-06-22Allow marking specific template instantiations as opaqueNick Fitzgerald
If a template has a specialization that bindgen doesn't understand, it can be helpful to mark it as opaque and continue making forward progress in the meantime. This is something we need in the SpiderMonkey bindings.
2017-06-21Auto merge of #741 - tmfink:feature-699-constified-enum-module, r=emiliobors-servo
Feature 699 constified enum module This is a work in progress for issue #699 that adds the `--constified-enum-module` option to bindgen. @emilio, could you give me some guidance on fixing the uses of the enum variant types? In the example below, `foo` should be replaced with `foo::Type`. I'm not sure of the proper way to rename `Item`s after the structures have been defined. My initial thought was to redefine the `CodeGenerator` trait to take a mutable reference to `item`, but that will not work because of the borrow checker. Thoughts? Todo: - [x] put constified enum variants in a `mod` - [x] ensure references to constified enum `foo` are changed to `foo::Type` - [x] handle `typedef` enums ----- Given the input header `tests/headers/constify-module-enums.h`: ~~~c // bindgen-flags: --constified-enum-module foo enum foo { THIS, SHOULD_BE, A_CONSTANT, }; struct bar { enum foo this_should_work; }; ~~~ `$ cargo run -- tests/headers/constify-module-enums.h --constified-enum-module foo --no-layout-tests` will output: ~~~rust /* automatically generated by rust-bindgen */ pub mod foo { pub type Type = ::std::os::raw::c_uint; pub const THIS: Type = 0; pub const SHOULD_BE: Type = 1; pub const A_CONSTANT: Type = 2; } #[repr(C)] #[derive(Debug, Copy)] pub struct bar { pub this_should_work: foo, } impl Clone for bar { fn clone(&self) -> Self { *self } } ~~~
2017-06-20Simplify is_constified_enum_moduleTravis Finkenauer
Used suggested code from @emilio and also added a test for an alias to an anonymous enum.
2017-06-20Auto merge of #770 - fitzgen:issue-769-bad-instantiation-test, r=emiliobors-servo
Ensure that every item is in some module's children list Previously, if an item's parent was not a module (eg a nested class definition whose parent it the outer class definition) and the parent was not whitelisted but the item was transitively whitelisted, then we could generate uses of the item without emitting any definition for it. This could happen because we were relying on the outer type calling for code generation on its inner types, but that relies on us doing code generation for the outer type, which won't happen if the outer type is not whitelisted. This commit avoids this gotcha by ensuring that all items end up in a module's children list, and so will be code generated even if their parent is not whitelisted. This does have the downside of changing the relative order of some of the emitted code, and so this has a big diff (as will the next bindgen update for downstream dependencies) but I actually think the newer order makes more sense, for what that is worth. Fixes #769 r? @emilio