@@ -243,12 +243,15 @@ pub fn read(path: String) -> Config {
243243 . expect ( "Errors reading bsconfig" )
244244}
245245
246- fn check_if_rescript11_or_higher ( version : & str ) -> bool {
247- if let Some ( major) = version. split ( '.' ) . next ( ) . and_then ( |s| s. parse :: < usize > ( ) . ok ( ) ) {
248- major >= 11
249- } else {
250- false
251- }
246+ fn check_if_rescript11_or_higher ( version : & str ) -> Result < bool , String > {
247+ version
248+ . split ( '.' )
249+ . next ( )
250+ . and_then ( |s| s. parse :: < usize > ( ) . ok ( ) )
251+ . map_or (
252+ Err ( "Could not parse version" . to_string ( ) ) ,
253+ |major| Ok ( major >= 11 ) ,
254+ )
252255}
253256
254257fn namespace_from_package_name ( package_name : & str ) -> String {
@@ -340,14 +343,17 @@ impl Config {
340343 }
341344
342345 pub fn get_uncurried_args ( & self , version : & str ) -> Vec < String > {
343- if check_if_rescript11_or_higher ( version) {
344- match self . uncurried . to_owned ( ) {
346+ match check_if_rescript11_or_higher ( version) {
347+ Ok ( true ) => match self . uncurried . to_owned ( ) {
345348 // v11 is always uncurried except iff explicitly set to false in the root rescript.json
346349 Some ( false ) => vec ! [ ] ,
347350 _ => vec ! [ "-uncurried" . to_string( ) ] ,
351+ } ,
352+ Ok ( false ) => vec ! [ ] ,
353+ Err ( _) => {
354+ eprintln ! ( "Could not parse version: {}" , version) ;
355+ vec ! [ ]
348356 }
349- } else {
350- vec ! [ ]
351357 }
352358 }
353359
@@ -430,20 +436,24 @@ mod tests {
430436
431437 #[ test]
432438 fn test_check_if_rescript11_or_higher ( ) {
433- assert_eq ! ( check_if_rescript11_or_higher( "11.0.0" ) , true ) ;
434- assert_eq ! ( check_if_rescript11_or_higher( "11.0.1" ) , true ) ;
435- assert_eq ! ( check_if_rescript11_or_higher( "11.1.0" ) , true ) ;
439+ assert_eq ! ( check_if_rescript11_or_higher( "11.0.0" ) , Ok ( true ) ) ;
440+ assert_eq ! ( check_if_rescript11_or_higher( "11.0.1" ) , Ok ( true ) ) ;
441+ assert_eq ! ( check_if_rescript11_or_higher( "11.1.0" ) , Ok ( true ) ) ;
436442
437- assert_eq ! ( check_if_rescript11_or_higher( "12.0.0" ) , true ) ;
443+ assert_eq ! ( check_if_rescript11_or_higher( "12.0.0" ) , Ok ( true ) ) ;
438444
439- assert_eq ! ( check_if_rescript11_or_higher( "10.0.0" ) , false ) ;
440- assert_eq ! ( check_if_rescript11_or_higher( "9.0.0" ) , false ) ;
445+ assert_eq ! ( check_if_rescript11_or_higher( "10.0.0" ) , Ok ( false ) ) ;
446+ assert_eq ! ( check_if_rescript11_or_higher( "9.0.0" ) , Ok ( false ) ) ;
441447 }
442448
443449 #[ test]
444450 fn test_check_if_rescript11_or_higher_misc ( ) {
445- assert_eq ! ( check_if_rescript11_or_higher( "11" ) , true ) ;
446- assert_eq ! ( check_if_rescript11_or_higher( "*" ) , false ) ;
447- assert_eq ! ( check_if_rescript11_or_higher( "12.0.0-alpha.4" ) , true ) ;
451+ assert_eq ! ( check_if_rescript11_or_higher( "11" ) , Ok ( true ) ) ;
452+ assert_eq ! ( check_if_rescript11_or_higher( "12.0.0-alpha.4" ) , Ok ( true ) ) ;
453+
454+ match check_if_rescript11_or_higher ( "*" ) {
455+ Ok ( _) => unreachable ! ( "Should not parse" ) ,
456+ Err ( _) => assert ! ( true ) ,
457+ }
448458 }
449459}
0 commit comments