summaryrefslogtreecommitdiff
path: root/libbindgen/src
diff options
context:
space:
mode:
authorArtem Biryukov <impowski@protonmail.ch>2016-12-15 22:43:38 +0300
committerArtem Biryukov <impowski@protonmail.ch>2016-12-15 22:45:07 +0300
commit5417d97e3b791048628e0a97897f0f4312c11031 (patch)
tree3297f5ecb1b27ffe3b01bbecf648720aeaf5d1b2 /libbindgen/src
parent673cb5ff7555f2c026f4fbb6b8dfac0ff19e8725 (diff)
Wrap Type into Option
Diffstat (limited to 'libbindgen/src')
-rw-r--r--libbindgen/src/clang.rs12
-rw-r--r--libbindgen/src/ir/ty.rs4
2 files changed, 8 insertions, 8 deletions
diff --git a/libbindgen/src/clang.rs b/libbindgen/src/clang.rs
index 3f272607..192ce09d 100644
--- a/libbindgen/src/clang.rs
+++ b/libbindgen/src/clang.rs
@@ -402,12 +402,12 @@ impl Cursor {
/// Given that this cursor's referent is a `typedef`, get the `Type` that is
/// being aliased.
- pub fn typedef_type(&self) -> Type {
- unsafe {
- Type {
- x: clang_getTypedefDeclUnderlyingType(self.x),
- }
- }
+ pub fn typedef_type(&self) -> Option<Type> {
+ let inner = Type {
+ x: unsafe { clang_getTypedefDeclUnderlyingType(self.x) }
+ };
+
+ if inner.is_valid() { Some(inner) } else { None }
}
/// Get the linkage kind for this cursor's referent.
diff --git a/libbindgen/src/ir/ty.rs b/libbindgen/src/ir/ty.rs
index 58ac7c87..3d379969 100644
--- a/libbindgen/src/ir/ty.rs
+++ b/libbindgen/src/ir/ty.rs
@@ -660,7 +660,7 @@ impl Type {
name = current.spelling();
- let inner_ty = cur.typedef_type();
+ let inner_ty = cur.typedef_type().expect("Not valid Type?");
inner = Item::from_ty(
&inner_ty,
Some(cur),
@@ -825,7 +825,7 @@ impl Type {
TypeKind::Function(signature)
}
CXType_Typedef => {
- let inner = cursor.typedef_type();
+ let inner = cursor.typedef_type().expect("Not valid Type?");
let inner =
Item::from_ty_or_ref(inner, location, parent_id, ctx);
TypeKind::Alias(ty.spelling(), inner)