Age | Commit message (Collapse) | Author |
|
ty: add tests for Type.is_invalid_named_type() (#460)
I didn't add an extra test module, since I couldn't find any precedents in the project.
Feedback welcome!
|
|
codegen: Improve the assertion message of failing layout tests.
r? @fitzgen
cc @flier
|
|
|
|
|
|
|
|
Improve struct alignment with padding bytes
I known, it is a little tricky or dirty solution, I have to do a lot of calculate for alignment.
For example
```c++
typedef struct {
long long __clang_max_align_nonce1
__attribute__((__aligned__(__alignof__(long long))));
long double __clang_max_align_nonce2
__attribute__((__aligned__(__alignof__(long double))));
} max_align_t;
```
will be generated as
```rust
pub struct _bindgen_ty_1 {
pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
_padding_0: u64,
pub __clang_max_align_nonce2: f64,
_padding_1: u64,
}
fn bindgen_test_layout__bindgen_ty_1() {
assert_eq!(::std::mem::size_of::<_bindgen_ty_1>() , 32usize);
assert_eq! (0usize , unsafe {
& ( * ( 0 as * const _bindgen_ty_1 ) ) .
__clang_max_align_nonce1 as * const _ as usize });
assert_eq! (16usize , unsafe {
& ( * ( 0 as * const _bindgen_ty_1 ) ) .
__clang_max_align_nonce2 as * const _ as usize });
}
```
It may generate wrong layout when use template or multi virtual inheritance.
At least, it is a begining, pass all the test cases, and some [complex struct](https://github.com/servo/rust-bindgen/compare/master...flier:padding-bytes?expand=1#diff-eda352138aed047149ebeec72d19979d) in wild.
|
|
|
|
objc: Support method arguments
Welp, I attempted to get the method arguments working.
I must confess, that I have not ran this against actual objective c code yet though.
|
|
|
|
|
|
|
|
Also exclude the test crate from packaging.
r? @Manishearth
|
|
|
|
|
|
Don't break the build so fast for older rust versions.
|
|
|
|
Don't publish tests
See https://bugzilla.mozilla.org/show_bug.cgi?id=1336655
r? @emilio @fitzgen
|
|
|
|
Assert that code is properly `rustfmt`ed in CI
r? @emilio
|
|
Make Cursor::num_template_args slightly more reliable
This improves the situation slightly, but even `clang_Type_getNumTemplateArgs` doesn't work for most templates...
r? @emilio
|
|
|
|
|
|
|
|
Run `cargo fmt`
It's been a while, and we have a lot of reformatting with the latest version of `rustfmt`.
|
|
This commit makes Travis CI reject code which has not been run through the
latest version of `rustfmt`.
Additionally, it refactors our CI testing out into a couple little scripts.
|
|
|
|
|
|
Fix a recent template-specialization-related regression.
r? @upsuper
|
|
|
|
This fixes a regression with stylo bindings after the function pointer PR.
|
|
Enhance Clang AST dumping
This commit extends our existing Clang AST dumping to include more information,
such as a cursor's canonical, referenced, and declarations cursors if they
exist. It prints out most of the information that libclang gives us directly,
but not the information that we attempt to (re)construct on top of the libclang
APIs.
r? @emilio or @Yamakaky
|
|
This can lead to infinite loops with forward declarations and blow the stack.
|
|
|
|
|
|
ir: Don't recurse too much looking for canonical types.
Fixes https://github.com/servo/rust-bindgen/issues/405
r? @fitzgen
|
|
|
|
This commit extends our existing Clang AST dumping to include more information,
such as a cursor's canonical, referenced, and declarations cursors if they
exist. It prints out most of the information that libclang gives us directly,
but not the information that we attempt to (re)construct on top of the libclang
APIs.
|
|
Add initial Objective C support
Hi! I made an attempt to support parsing objective c headers. This is very much incomplete,
and likely not quite yet ready for merging, but I thought I'd share the progress so far.
Comments appreciated, I'm still very much a newbie in just about everything related to this change (rust as a language, rust ast, libclang, rust-bindgen), and there were many parts of code I wasn't quite sure about.
Commit message:
It parses interfaces and protocol but ignores base classes,
methods that don’t have arguments, the arguments are currently ignored.
Also you can pass objc class instances to C functions.
Next steps are inheritance/base classes, method signatures,
properties, categories.
Then check with system headers what is missing.
|
|
Re-enable OSX builds on Travis CI
This reverts commit fc38f9b18a9dacc76b7e8a5c8633f0f02289daae.
r? @fitzgen
|
|
This reverts commit fc38f9b18a9dacc76b7e8a5c8633f0f02289daae.
|
|
ir: Fix is_in_non_fully_specialized_template check.
Fixes https://github.com/servo/rust-bindgen/issues/462
r? @upsuper
|
|
Fixes https://github.com/servo/rust-bindgen/issues/462
|
|
It parses interfaces and protocol but ignores base classes, and their
methods which don’t have arguments, the method signature is currently
ignored. Also you can pass objc class instances to C functions.
Next steps are inheritance/base classes, method signatures, properties,
categories. Then check with system headers what is missing.
|
|
ir: Cleanup name duplication in aliases and named types.
It's just dumb.
r? @fitzgen
|
|
It's just dumb.
|
|
codegen: Do the same workaround we do for template parameters with `typename` on aliases for `decltypes` we can't resolve.
r? @fitzgen
|
|
We do the same for template parameters with `typename` on aliases.
This is not great, but it's better than generating invalid code.
|
|
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.
r? @fitzgen
|
|
These aren't extremely great, since this usually requires extra bookkeeping. But
C allows it, so let's keep the same semantics.
|
|
Turns out they were broken before
https://github.com/servo/rust-bindgen/issues/456.
Let's test it so it doesn't regress.
|