diff options
-rw-r--r-- | libbindgen/src/clang.rs | 12 | ||||
-rw-r--r-- | libbindgen/src/ir/ty.rs | 4 |
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) |