File tree 2 files changed +27
-14
lines changed
2 files changed +27
-14
lines changed Original file line number Diff line number Diff line change @@ -822,17 +822,29 @@ impl Comment {
822
822
823
823
/// Given that this comment is an HTML start tag, get the `idx`th
824
824
/// attribute's name.
825
- pub fn get_tag_attr_name ( & self , idx : c_uint ) -> String {
826
- unsafe {
827
- String_ { x : clang_HTMLStartTag_getAttrName ( self . x , idx) } . to_string ( )
825
+ pub fn get_tag_attr_name ( & self , idx : c_uint ) -> Option < String > {
826
+ if idx < self . get_num_tag_attrs ( ) {
827
+ None
828
+ } else {
829
+ unsafe {
830
+ Some ( String_ {
831
+ x : clang_HTMLStartTag_getAttrName ( self . x , idx)
832
+ } . to_string ( ) )
833
+ }
828
834
}
829
835
}
830
836
831
837
/// Given that this comment is an HTML start tag, get the `idx`th
832
838
/// attribute's value.
833
- pub fn get_tag_attr_value ( & self , idx : c_uint ) -> String {
834
- unsafe {
835
- String_ { x : clang_HTMLStartTag_getAttrValue ( self . x , idx) } . to_string ( )
839
+ pub fn get_tag_attr_value ( & self , idx : c_uint ) -> Option < String > {
840
+ if idx < self . get_num_tag_attrs ( ) {
841
+ None
842
+ } else {
843
+ unsafe {
844
+ Some ( String_ {
845
+ x : clang_HTMLStartTag_getAttrValue ( self . x , idx)
846
+ } . to_string ( ) )
847
+ }
836
848
}
837
849
}
838
850
}
Original file line number Diff line number Diff line change @@ -134,19 +134,20 @@ impl Annotations {
134
134
if comment. kind ( ) == CXComment_HTMLStartTag &&
135
135
comment. get_tag_name ( ) == "div" &&
136
136
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" ) {
138
139
* matched = true ;
139
140
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 ( ) {
143
143
"opaque" => self . opaque = true ,
144
144
"hide" => self . hide = true ,
145
145
"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) ) ,
150
151
_ => { } ,
151
152
}
152
153
}
You can’t perform that action at this time.
0 commit comments