diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-10-29 22:20:18 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-29 22:20:18 -0500 |
commit | 63f8296d61f4d4f521f59b6190b20f0a21504e75 (patch) | |
tree | 0831d8c653796a4454c80aaada30a4a9a1b8bacb | |
parent | c15e221be7f9c24681c024932fca66a008e5d348 (diff) | |
parent | 7dac42001d1dfe4b7f76027e94f95ea8d6dc141b (diff) |
Auto merge of #163 - catdesk:master, r=KiChjang
Change clang::Type::num_elements to return Option
Fixes #139.
-rwxr-xr-x | src/clang.rs | 9 | ||||
-rw-r--r-- | src/ir/ty.rs | 2 |
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. |