@@ -133,7 +133,7 @@ impl EarlyProps {
133
133
fn ignore_gdb ( config : & Config , line : & str ) -> bool {
134
134
if let Some ( actual_version) = config. gdb_version {
135
135
if let Some ( rest) = line. strip_prefix ( "min-gdb-version:" ) . map ( str:: trim) {
136
- let ( start_ver, end_ver) = extract_gdb_version_range ( rest) ;
136
+ let ( start_ver, end_ver) = extract_version_range ( rest, extract_gdb_version ) ;
137
137
138
138
if start_ver != end_ver {
139
139
panic ! ( "Expected single GDB version" )
@@ -142,7 +142,8 @@ impl EarlyProps {
142
142
// version
143
143
return actual_version < start_ver;
144
144
} else if let Some ( rest) = line. strip_prefix ( "ignore-gdb-version:" ) . map ( str:: trim) {
145
- let ( min_version, max_version) = extract_gdb_version_range ( rest) ;
145
+ let ( min_version, max_version) =
146
+ extract_version_range ( rest, extract_gdb_version) ;
146
147
147
148
if max_version < min_version {
148
149
panic ! ( "Malformed GDB version range: max < min" )
@@ -154,36 +155,6 @@ impl EarlyProps {
154
155
false
155
156
}
156
157
157
- // Takes a directive of the form "<version1> [- <version2>]",
158
- // returns the numeric representation of <version1> and <version2> as
159
- // tuple: (<version1> as u32, <version2> as u32)
160
- // If the <version2> part is omitted, the second component of the tuple
161
- // is the same as <version1>.
162
- fn extract_gdb_version_range ( line : & str ) -> ( u32 , u32 ) {
163
- const ERROR_MESSAGE : & ' static str = "Malformed GDB version directive" ;
164
-
165
- let range_components = line
166
- . split ( & [ ' ' , '-' ] [ ..] )
167
- . filter ( |word| !word. is_empty ( ) )
168
- . map ( extract_gdb_version)
169
- . skip_while ( Option :: is_none)
170
- . take ( 3 ) // 3 or more = invalid, so take at most 3.
171
- . collect :: < Vec < Option < u32 > > > ( ) ;
172
-
173
- match * range_components {
174
- [ v] => {
175
- let v = v. unwrap ( ) ;
176
- ( v, v)
177
- }
178
- [ min, max] => {
179
- let v_min = min. unwrap ( ) ;
180
- let v_max = max. expect ( ERROR_MESSAGE ) ;
181
- ( v_min, v_max)
182
- }
183
- _ => panic ! ( ERROR_MESSAGE ) ,
184
- }
185
- }
186
-
187
158
fn ignore_lldb ( config : & Config , line : & str ) -> bool {
188
159
if let Some ( actual_version) = config. lldb_version {
189
160
if let Some ( min_version) = line. strip_prefix ( "min-lldb-version:" ) . map ( str:: trim) {
@@ -982,3 +953,34 @@ fn parse_normalization_string(line: &mut &str) -> Option<String> {
982
953
* line = & line[ end + 1 ..] ;
983
954
Some ( result)
984
955
}
956
+
957
+ // Takes a directive of the form "<version1> [- <version2>]",
958
+ // returns the numeric representation of <version1> and <version2> as
959
+ // tuple: (<version1> as u32, <version2> as u32)
960
+ // If the <version2> part is omitted, the second component of the tuple
961
+ // is the same as <version1>.
962
+ fn extract_version_range < F > ( line : & str , parse : F ) -> ( u32 , u32 )
963
+ where
964
+ F : Fn ( & str ) -> Option < u32 > ,
965
+ {
966
+ let range_components = line
967
+ . split ( & [ ' ' , '-' ] [ ..] )
968
+ . filter ( |word| !word. is_empty ( ) )
969
+ . map ( parse)
970
+ . skip_while ( Option :: is_none)
971
+ . take ( 3 ) // 3 or more = invalid, so take at most 3.
972
+ . collect :: < Vec < Option < u32 > > > ( ) ;
973
+
974
+ match * range_components {
975
+ [ v] => {
976
+ let v = v. unwrap ( ) ;
977
+ ( v, v)
978
+ }
979
+ [ min, max] => {
980
+ let v_min = min. unwrap ( ) ;
981
+ let v_max = max. expect ( "Malformed version directive" ) ;
982
+ ( v_min, v_max)
983
+ }
984
+ _ => panic ! ( "Malformed version directive" ) ,
985
+ }
986
+ }
0 commit comments