summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbindgen/Cargo.toml2
-rw-r--r--libbindgen/src/lib.rs11
-rw-r--r--libbindgen/tests/headers/bitfield-enum-basic.hpp (renamed from libbindgen/tests/headers/bitfield-enum-basic.h)0
-rw-r--r--libbindgen/tests/headers/empty_template_param_name.hpp2
4 files changed, 12 insertions, 3 deletions
diff --git a/libbindgen/Cargo.toml b/libbindgen/Cargo.toml
index 8d050a96..47e8b282 100644
--- a/libbindgen/Cargo.toml
+++ b/libbindgen/Cargo.toml
@@ -12,7 +12,7 @@ license = "BSD-3-Clause"
name = "libbindgen"
readme = "README.md"
repository = "https://github.com/servo/rust-bindgen"
-version = "0.1.1"
+version = "0.1.2"
workspace = ".."
[dev-dependencies]
diff --git a/libbindgen/src/lib.rs b/libbindgen/src/lib.rs
index 7db26eab..3ced6dab 100644
--- a/libbindgen/src/lib.rs
+++ b/libbindgen/src/lib.rs
@@ -510,7 +510,7 @@ impl<'ctx> Bindings<'ctx> {
let span = span.unwrap_or(DUMMY_SP);
let mut context = BindgenContext::new(options);
- parse(&mut context);
+ try!(parse(&mut context));
let module = ast::Mod {
inner: span,
@@ -624,14 +624,20 @@ pub fn parse_one(ctx: &mut BindgenContext,
}
/// Parse the Clang AST into our `Item` internal representation.
-fn parse(context: &mut BindgenContext) {
+fn parse(context: &mut BindgenContext) -> Result<(), ()> {
use clang::Diagnostic;
use clangll::*;
+ let mut any_error = false;
for d in context.translation_unit().diags().iter() {
let msg = d.format(Diagnostic::default_opts());
let is_err = d.severity() >= CXDiagnostic_Error;
println!("{}, err: {}", msg, is_err);
+ any_error |= is_err;
+ }
+
+ if any_error {
+ return Err(());
}
let cursor = context.translation_unit().cursor();
@@ -646,6 +652,7 @@ fn parse(context: &mut BindgenContext) {
assert!(context.current_module() == context.root_module(),
"How did this happen?");
+ Ok(())
}
/// Extracted Clang version data
diff --git a/libbindgen/tests/headers/bitfield-enum-basic.h b/libbindgen/tests/headers/bitfield-enum-basic.hpp
index 364bebf2..364bebf2 100644
--- a/libbindgen/tests/headers/bitfield-enum-basic.h
+++ b/libbindgen/tests/headers/bitfield-enum-basic.hpp
diff --git a/libbindgen/tests/headers/empty_template_param_name.hpp b/libbindgen/tests/headers/empty_template_param_name.hpp
index b3360bc9..0e9f3c34 100644
--- a/libbindgen/tests/headers/empty_template_param_name.hpp
+++ b/libbindgen/tests/headers/empty_template_param_name.hpp
@@ -1,3 +1,5 @@
+// bindgen-flags: -- -std=c++11
+
template<typename...> using __void_t = void;
template<typename _Iterator, typename = __void_t<>>