Skip to content

Commit 26c3afe

Browse files
author
bors-servo
authored
Auto merge of #232 - 11Takanori:124-clang-cursor-referenced-option-cursor, r=emilio
clang::Cursor::referenced should return Option<clang::Cursor> Fixes #124 Since I am new to Rust, I hope I didn't do things too badly
2 parents bdfab64 + 76b5372 commit 26c3afe

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/clang.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,13 @@ impl Cursor {
264264

265265
/// Given that this cursor's referent is reference type, get the cursor
266266
/// pointing to the referenced type.
267-
pub fn referenced(&self) -> Cursor {
267+
pub fn referenced(&self) -> Option<Cursor> {
268268
unsafe {
269-
Cursor {
269+
let ret = Cursor {
270270
x: clang_getCursorReferenced(self.x),
271-
}
271+
};
272+
273+
if ret.is_valid() { Some(ret) } else { None }
272274
}
273275
}
274276

src/ir/ty.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,7 @@ impl Type {
667667
TypeKind::TemplateAlias(inner.unwrap(), args)
668668
}
669669
CXCursor_TemplateRef => {
670-
let referenced = location.referenced();
670+
let referenced = location.referenced().expect("expected value, got none");
671671
let referenced_ty = referenced.cur_type();
672672
let referenced_declaration =
673673
Some(referenced_ty.declaration());
@@ -679,7 +679,7 @@ impl Type {
679679
ctx);
680680
}
681681
CXCursor_TypeRef => {
682-
let referenced = location.referenced();
682+
let referenced = location.referenced().expect("expected value, got none");
683683
let referenced_ty = referenced.cur_type();
684684
let referenced_declaration =
685685
Some(referenced_ty.declaration());

0 commit comments

Comments
 (0)