summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-10-29 22:20:18 -0500
committerGitHub <noreply@github.com>2016-10-29 22:20:18 -0500
commit63f8296d61f4d4f521f59b6190b20f0a21504e75 (patch)
tree0831d8c653796a4454c80aaada30a4a9a1b8bacb
parentc15e221be7f9c24681c024932fca66a008e5d348 (diff)
parent7dac42001d1dfe4b7f76027e94f95ea8d6dc141b (diff)
Auto merge of #163 - catdesk:master, r=KiChjang
Change clang::Type::num_elements to return Option Fixes #139.
-rwxr-xr-xsrc/clang.rs9
-rw-r--r--src/ir/ty.rs2
2 files changed, 7 insertions, 4 deletions
diff --git a/src/clang.rs b/src/clang.rs
index ae4a3f44..77cead95 100755
--- a/src/clang.rs
+++ b/src/clang.rs
@@ -678,9 +678,12 @@ impl Type {
/// Given that this type is an array or vector type, return its number of
/// elements.
- pub fn num_elements(&self) -> usize {
- unsafe {
- clang_getNumElements(self.x) as usize
+ pub fn num_elements(&self) -> Option<usize> {
+ let num_elements_returned = unsafe { clang_getNumElements(self.x) };
+ if num_elements_returned != -1 {
+ Some(num_elements_returned as usize)
+ } else {
+ None
}
}
diff --git a/src/ir/ty.rs b/src/ir/ty.rs
index 09059528..c55d7622 100644
--- a/src/ir/ty.rs
+++ b/src/ir/ty.rs
@@ -681,7 +681,7 @@ impl Type {
CXType_ConstantArray => {
let inner = Item::from_ty(&ty.elem_type(), location, parent_id, ctx)
.expect("Not able to resolve array element?");
- TypeKind::Array(inner, ty.num_elements())
+ TypeKind::Array(inner, ty.num_elements().unwrap())
}
// A complex number is always a real and an imaginary part, so
// represent that as a two-item array.