Age | Commit message (Collapse) | Author |
|
|
|
Use the constness of the inner type when converting array function args.
Fixes https://github.com/servo/rust-bindgen/issues/509
I'm actually surprised we had no tests for this.
|
|
arguments.
Fixes https://github.com/servo/rust-bindgen/issues/509
I'm actually surprised we had no tests for this.
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
|
|
Cleanup IR graph traversal
This is a bunch of pre-cursor work to properly determining which template type parameters are actually used or not.
First three commits are mechanical / code motion / renaming.
Fourth is the meat of this PR, making a bunch of things more generic and introducing the concept of an `EdgeKind` in the IR graph.
Last commit is just `cargo fmt`.
r? @emilio
|
|
|
|
This makes the IR traversal infrastructure generic. It makes it so we can use
the same traversal code for whitelisting traversals and asserting no dangling
item references. Therefore the queue of items to visit is generic (whitelisting
uses DFS, while asserting against dangling uses BFS), the storage for the seen
set (whitelisting uses a simple set, asserting against dangling uses a map from
item to the item from which it was discovered).
It also introduces the concept of different kinds of edges in the IR graph, and
the ability to choose which edges to follow. This means we can simplify
non-transitive whitelisting to a simple function that always returns "no do not
follow this edge". It plays an important part for future analysis of which
template declaration type parameters are used or not.
|
|
And its `collect_types` method to `trace`.
|
|
|
|
Also moves it out to its own ir::traversal module, and moves ItemSet to the
ir::item module.
|
|
Don't mangle name in partial specification (with Cargo.lock update)
|
|
|
|
ir: Don't parse non-semantic-children cursor as inner structs.
r? @fitzgen
|
|
|
|
|
|
Fixes: https://github.com/servo/rust-bindgen/issues/482
|
|
Rename llvm_stable feature and remove references from docs.
Fixes: https://github.com/servo/rust-bindgen/issues/409
|
|
|
|
|
|
|
|
|
|
|
|
Template instantiation
I very much suspect this needs a rebase, but I haven't done it yet.
This is the majority of #446, although it doesn't have the name generation for anonymous named types patches yet (that will be a different PR).
|
|
ir: Remove unused call to clang_Cursor_isAnonymous.
Fixes #496
|
|
Clarify/correct command line usage
cargo installs bindgen to the local bin repo and not the current directory.
|
|
cargo installs bindgen to the local bin repo and not the current directory.
|
|
Clang 3.5 support
Fixes #496
|
|
Fixes #496
|
|
|
|
|
|
|
|
|
|
This commit renames `build_template_wrapper` to `instantiate_template` because
that is what it is really doing. Additionally, it completely reworks its
logic. Sometimes clang gives us rather sorry ASTs for template
instantiations (particularly when they involve incomplete template declarations)
and we need to manually reconstruct the template argument nesting.
|
|
This commit create the PartialType type to represent types that we are in the
middle of parsing and their cursor where we found them. Additionally, it fixes a
long standing FIXME to make `currently_parsed_types` private. Finally, it
implements `TemplateDeclaration` for `PartialType` so that we can get
information about a partially parsed template declaration type's template
parameters.
|
|
The TemplateDeclaration trait aggregates information about template
declarations (separate from instantiations and specializations) and their
template parameters into a single source of truth.
|
|
|
|
|
|
The `CanonicalTypeDeclaration` type exists as proof-by-construction that its
cursor is the canonical declaration for its type. If you have a
`CanonicalTypeDeclaration` instance, you know for sure that the type and cursor
match up in a canonical declaration relationship, and it simply cannot be
otherwise.
|
|
This commit adds collect_children, has_children, and has_at_least_num_children
methods to Cursor.
|
|
|
|
|
|
|
|
check layout align before padding bytes
Fix issue #493 again :S
Still finding way to reproduce it
|
|
|
|
codegen: Fix remaining cases of missing core prefix.
Fixes #488
r? @fitzgen
|
|
|
|
check empty layout when padding bytes
fast workaround to fix issue #493
need to investigate why layout is empty
|
|
|
|
Implement `Default` trait
We need `Default` trait to handle so many auto generated fields when create new structure.
|
|
Added catch_unwind to catch panic at generator
Fixes #50
- Adds a `catch_unwind` to catch panic at binding generation.
- Prints out a more detailed message that points to the potential misuse of flags, when `generate()` fails.
- Added false-by-default `verbose` option flag to specify whether detailed message should be printed for the time being
- [x] Ran all test cases
- [x] Verified that correct error messages appear when bindings fail to generate
- [x] Verified use of verbose flag
- [x] Considered changes made by `cargo fmt`
r? @emilio
|
|
|