diff options
-rw-r--r-- | libbindgen/Cargo.toml | 2 | ||||
-rw-r--r-- | libbindgen/src/lib.rs | 11 | ||||
-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.hpp | 2 |
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<>> |