summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2017-09-13Make whitelisted_var consistant with CLI flagsOliver Geller
2017-09-11Make bindgen generate enums as constants by defaultCldfire
Also simplifies the logic that determines which enum variation gets chosen.
2017-09-07Auto merge of #956 - ↵bors-servo
fitzgen:document-no-recursive-whitelist-will-break-code, r=emilio Document that not recursively whitelisting is dangerous See #949 for context and motivation. r? @emilio
2017-09-07Don't duplicate large comments; just reference them insteadNick Fitzgerald
2017-09-07Use the `quote!` macro for `link_name` attributesNick Fitzgerald
The latest `rustfmt` has fixed the formatting bugs we were running into.
2017-09-07Add a timer for rustfmt'ing the generated bindingsNick Fitzgerald
2017-09-07We can afford the exra cycles to use double precision floats hereNick Fitzgerald
;)
2017-09-07Fix units and formatting of time phasesNick Fitzgerald
Was previously printing seconds, but claiming it was milliseconds.
2017-09-07Use `quote` instead of `syntex` for Rust code generationNick Fitzgerald
The `syntex` crate is unmaintained. It is slow to build, and additionally it requires that we pre-process `src/codegen/mod.rs` before we build the `bindgen` crate. The `quote` crate provides similar quasi-quoting functionality, is maintained, and builds faster. It doesn't have a typed API or builders, however; it only deals with tokens. Before this commit: ``` $ cargo clean; cargo build <snip> Finished dev [unoptimized + debuginfo] target(s) in 98.75 secs ``` After this commit: ``` $ cargo clean; cargo build <snip> Finished dev [unoptimized + debuginfo] target(s) in 46.26 secs ``` Build time is cut in half! But what about run time? Before this commit: ``` Generated Stylo bindings in: Duration { secs: 3, nanos: 521105668 } ``` After this commit: ``` Generated Stylo bindings in: Duration { secs: 3, nanos: 548797242 } ``` So it appears to be about 20ms slower at generating Stylo bindings, but I suspect this is well within the noise. Finally, this also lets us remove that nasty `mem::transmute` inside `bindgen::ir::BindgenContext::gen` that was used for the old `syntex` context. Now `BindgenContext` doesn't have a lifetime parameter either. This should make it easier to revisit doing our analyses in parallel with `rayon`, since that context was one of the things that made it hard for `BindgenContext` to implement `Sync`. Fixes #925
2017-09-07Add the TypeKind name to the IR graphviz outputNick Fitzgerald
2017-09-07Document that not recursively whitelisting is dangerousNick Fitzgerald
See #949 for context and motivation.
2017-09-06Auto merge of #950 - fitzgen:no-derive-copy-for-blacklisted-types, r=emiliobors-servo
Derive + blacklisted types * [X] document blacklisting + derive interaction * [X] derive `Copy` * [X] derive `Debug` * [X] `--impl-debug` * [x] derive `Default` * [x] derive `Hash` * [x] derive `PartialEq`
2017-09-06Do not derive things on opaque unionsNick Fitzgerald
Unions don't support deriving these things, even if there is only one variant (the opaque layout field).
2017-09-06Pessimistically assume that blacklisted types do not implement DefaultNick Fitzgerald
2017-09-06Reflect whitelisted status via color in graphviz dot filesNick Fitzgerald
This makes it so that whitelisted items and edges outgoing from them are black, while non-whitelisted items and their edges are gray.
2017-09-06Don't try and debug format blacklisted types when generating `impl Debug` blocksNick Fitzgerald
2017-09-06Be pessimistic about `derive(Debug)` and blacklisted typesNick Fitzgerald
2017-09-06Auto merge of #952 - mchlrhw:master, r=fitzgenbors-servo
Add `bindgen::Builder::derive_copy` Fixes https://github.com/rust-lang-nursery/rust-bindgen/issues/948
2017-09-06Check derive_copy optionmchlrhw
2017-09-06Add `bindgen::Builder::derive_copy`mchlrhw
2017-09-06ir: Pass the target to clang if it wasn't explicitly passed already.Emilio Cobos Álvarez
Fixes #942 Fixes #947
2017-09-05Do not derive Copy for blacklisted typesNick Fitzgerald
Presumably they are blacklisted because we can't understand them properly, so be pessimistic about what we can derive for it. Fixes #944.
2017-09-04ir: Fix definitions outside of base class manually tracking the correct parent.Emilio Cobos Álvarez
2017-09-04ir: When something has a definition, return unresolved type references until ↵Emilio Cobos Álvarez
we parse it. This ensures that we see all the relevant types that are defined when parsing the definition, avoiding problems like #888. Fixes #888
2017-08-30Squash commit for --time-phases command line optionJackson O'Donnell
initial timer branch commit added time_phases builder parameter create timers for BindgenContex analyses, codegen time parse added docstrings added fitzgens suggestions add --time-phases to bindgen::Builder::command_line_flags
2017-08-29Auto merge of #936 - jhod0:no_fieldgen_on_opaque, r=fitzgenbors-servo
Avoid generating fields/methods for opaque objects WIP fix for issue #929 With libclang 4, passes all tests on my machine except `dump_preprocessed_input`, but that fails on the master branch as well
2017-08-29removed commented code, added punctuationJackson O'Donnell
2017-08-28no fields or methods created for opaqueJackson O'Donnell
2017-08-25Auto merge of #932 - bd339:has_destructor_fp, r=fitzgenbors-servo
Rewrite `has destructor` analysis as a fixed-point analysis Fixes #927 . Note that this creates a dependency between the "cannot derive copy" and "has destructor" analysis, i.e. the "has destructor" analysis must run before the "cannot derive copy" analysis, because "cannot derive copy" needs the results of "has destructor".
2017-08-25Rewrite the `has destructor` analysis as a fixed-point analysis in the ↵Benjamin Dahse
monotone framework
2017-08-24Simplify helpers::blobMalo Jaffré
Thanks @fitzgen for the detailed instructions. Fixes #928.
2017-08-21Can derive EqZhiting Zhu
2017-08-21Rename `TypeKind::Named` to `TypeKind::TypeParam`Anna Liao
Also renames a bunch of other things referring to named types to refer to type parameters. Fixes #915
2017-08-19Update doc for unionsTravis Finkenauer
Addresses #832
2017-08-17Auto merge of #920 - photoszzt:fix_comments, r=emiliobors-servo
Fix misleading comments r? @fitzgen or @emilio
2017-08-16Fix misleading commentsZhiting Zhu
2017-08-16Check if `clang_Type_getNumTemplateArguments` is loaded before useNick Fitzgerald
Older clang don't have it, and while we can't pass our whole test suite with those older clangs, we can still generate simple C bindings, so it makes sense not to panic for C++ only things.
2017-08-14Only compute which types we can derive PartialEq for if we'll use itNick Fitzgerald
If we aren't going to derive `PartialEq`, then it doesn't make sense to even run the analysis.
2017-08-14Auto merge of #912 - fitzgen:only-run-analyses-if-needed, r=emiliobors-servo
Only run analyses when we are going to use their results Currently, there are various analyses related to deriving various traits that we unconditionally run. However, if we aren't going to derive those traits in codegen, then computing whether or not we can derive the traits is wasteful. r? @emilio
2017-08-14Only run analyses when we are going to use their resultsNick Fitzgerald
Currently, there are various analyses related to deriving various traits that we unconditionally run. However, if we aren't going to derive those traits in codegen, then computing whether or not we can derive the traits is wasteful.
2017-08-14Can derive PartialEq analysisZhiting Zhu
2017-08-14Disables --rustfmt-bindgens by defaultBastian Köcher
2017-08-14Improves error handling for rustfmtBastian Köcher
2017-08-14Renames format-* command-line arguments to rustfmt-*Bastian Köcher
The --rustfmt-configuration-file command-line argument automatically activates --rustfmt-bindings.
2017-08-14Fixes compilation warnings with rustc 1.21.0-nightly (13d94d5fa 2017-08-10)Bastian Köcher
2017-08-14Adds support for running rustfmt on generated bindingsBastian Köcher
This patch enables bindgen to run rustfmt on generated bindings. Rustfmt is used from the global PATH. Two new command-line arguments are added: 1. --format-bindings: Enables running rustfmt 2. --format-configuration-file: The configuration file for rustfmt (not required).
2017-08-14Auto merge of #909 - bkchr:union_fix, r=emiliobors-servo
Fixes alignment errors with new Rust union type This fix creates a new private field with the required aligned size. This new private field ensures that the union has the required size. This fixes: #908
2017-08-14Fixes alignment errors with new Rust union typeBastian Köcher
This fix creates a new private field with the required aligned size. This new private field ensures that the union has the required size.
2017-08-14Auto merge of #911 - upsuper:layout-test-name, r=emiliobors-servo
Stablize name of reference and nested combination of ref, ptr, and array
2017-08-14Remove Type::is_valid_identifierXidorn Quan