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 @@ -825,17 +825,29 @@ impl Comment {
825
825
826
826
/// Given that this comment is an HTML start tag, get the `idx`th
827
827
/// attribute's name.
828
- pub fn get_tag_attr_name ( & self , idx : c_uint ) -> String {
829
- unsafe {
830
- String_ { x : clang_HTMLStartTag_getAttrName ( self . x , idx) } . to_string ( )
828
+ pub fn get_tag_attr_name ( & self , idx : c_uint ) -> Option < String > {
829
+ if idx >= self . get_num_tag_attrs ( ) {
830
+ None
831
+ } else {
832
+ unsafe {
833
+ Some ( String_ {
834
+ x : clang_HTMLStartTag_getAttrName ( self . x , idx)
835
+ } . to_string ( ) )
836
+ }
831
837
}
832
838
}
833
839
834
840
/// Given that this comment is an HTML start tag, get the `idx`th
835
841
/// attribute's value.
836
- pub fn get_tag_attr_value ( & self , idx : c_uint ) -> String {
837
- unsafe {
838
- String_ { x : clang_HTMLStartTag_getAttrValue ( self . x , idx) } . to_string ( )
842
+ pub fn get_tag_attr_value ( & self , idx : c_uint ) -> Option < String > {
843
+ if idx >= self . get_num_tag_attrs ( ) {
844
+ None
845
+ } else {
846
+ unsafe {
847
+ Some ( String_ {
848
+ x : clang_HTMLStartTag_getAttrValue ( self . x , idx)
849
+ } . to_string ( ) )
850
+ }
839
851
}
840
852
}
841
853
}
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