File tree Expand file tree Collapse file tree 3 files changed +3
-2
lines changed
Expand file tree Collapse file tree 3 files changed +3
-2
lines changed Original file line number Diff line number Diff line change @@ -1079,7 +1079,7 @@ pub(crate) fn parse_f64(scalar: &str) -> Option<f64> {
10791079 return Some ( f64:: NEG_INFINITY ) ;
10801080 }
10811081 if let ".nan" | ".NaN" | ".NAN" = scalar {
1082- return Some ( f64:: NAN ) ;
1082+ return Some ( f64:: NAN . copysign ( 1.0 ) ) ;
10831083 }
10841084 if let Ok ( float) = unpositive. parse :: < f64 > ( ) {
10851085 if float. is_finite ( ) {
Original file line number Diff line number Diff line change @@ -690,6 +690,7 @@ fn test_parse_number() {
690690
691691 let n = ".nan" . parse :: < Number > ( ) . unwrap ( ) ;
692692 assert_eq ! ( n, Number :: from( f64 :: NAN ) ) ;
693+ assert ! ( n. as_f64( ) . unwrap( ) . is_sign_positive( ) ) ;
693694
694695 let n = ".inf" . parse :: < Number > ( ) . unwrap ( ) ;
695696 assert_eq ! ( n, Number :: from( f64 :: INFINITY ) ) ;
Original file line number Diff line number Diff line change @@ -20,7 +20,7 @@ fn test_nan() {
2020 assert ! ( neg_fake_nan. is_string( ) ) ;
2121
2222 let significand_mask = 0xF_FFFF_FFFF_FFFF ;
23- let bits = ( f64:: NAN . to_bits ( ) ^ significand_mask) | 1 ;
23+ let bits = ( f64:: NAN . copysign ( 1.0 ) . to_bits ( ) ^ significand_mask) | 1 ;
2424 let different_pos_nan = Value :: Number ( Number :: from ( f64:: from_bits ( bits) ) ) ;
2525 assert_eq ! ( pos_nan, different_pos_nan) ;
2626}
You can’t perform that action at this time.
0 commit comments