Skip to content

Commit 6298736

Browse files
Rohan Prinjaajnirp
Rohan Prinja
authored andcommitted
change return type of Comment::get_tag_attr_{name,value} to Option<String>
1 parent f7b5fae commit 6298736

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

src/clang.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -817,17 +817,29 @@ impl Comment {
817817

818818
/// Given that this comment is an HTML start tag, get the `idx`th
819819
/// attribute's name.
820-
pub fn get_tag_attr_name(&self, idx: c_uint) -> String {
821-
unsafe {
822-
String_ { x: clang_HTMLStartTag_getAttrName(self.x, idx) }.to_string()
820+
pub fn get_tag_attr_name(&self, idx: c_uint) -> Option<String> {
821+
if idx < self.get_num_tag_attrs() {
822+
None
823+
} else {
824+
unsafe {
825+
Some(String_ {
826+
x: clang_HTMLStartTag_getAttrName(self.x, idx)
827+
}.to_string())
828+
}
823829
}
824830
}
825831

826832
/// Given that this comment is an HTML start tag, get the `idx`th
827833
/// attribute's value.
828-
pub fn get_tag_attr_value(&self, idx: c_uint) -> String {
829-
unsafe {
830-
String_ { x: clang_HTMLStartTag_getAttrValue(self.x, idx) }.to_string()
834+
pub fn get_tag_attr_value(&self, idx: c_uint) -> Option<String> {
835+
if idx < self.get_num_tag_attrs() {
836+
None
837+
} else {
838+
unsafe {
839+
Some(String_ {
840+
x: clang_HTMLStartTag_getAttrValue(self.x, idx)
841+
}.to_string())
842+
}
831843
}
832844
}
833845
}

src/ir/annotations.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,19 +134,20 @@ impl Annotations {
134134
if comment.kind() == CXComment_HTMLStartTag &&
135135
comment.get_tag_name() == "div" &&
136136
comment.get_num_tag_attrs() > 1 &&
137-
comment.get_tag_attr_name(0) == "rustbindgen" {
137+
comment.get_tag_attr_name(0).as_ref().map(|s| s.as_str())
138+
== Some("rustbindgen") {
138139
*matched = true;
139140
for i in 0..comment.get_num_tag_attrs() {
140-
let value = comment.get_tag_attr_value(i);
141-
let name = comment.get_tag_attr_name(i);
142-
match name.as_str() {
141+
let value_opt = comment.get_tag_attr_value(i);
142+
match comment.get_tag_attr_name(i).unwrap().as_str() {
143143
"opaque" => self.opaque = true,
144144
"hide" => self.hide = true,
145145
"nocopy" => self.disallow_copy = true,
146-
"replaces" => self.use_instead_of = Some(value),
147-
"private" => self.private_fields = Some(value != "false"),
148-
"accessor"
149-
=> self.accessor_kind = Some(parse_accessor(&value)),
146+
"replaces" => self.use_instead_of = value_opt,
147+
"private" => self.private_fields = value_opt.map(|v|
148+
v != "false"),
149+
"accessor" => self.accessor_kind = value_opt.map(|v|
150+
parse_accessor(&v)),
150151
_ => {},
151152
}
152153
}

0 commit comments

Comments
 (0)